`

why can bit mask suppress sign extention

阅读更多

yes, bit mask can suppress sign extension, as it changes the number from negative to the positive, you see:

byte b = -1;
char c = (char)(b & 0xff);

 b is originally a byte, and it's negative, after it bitwise AND with the bit mask 0xff, it then becomes positive and thus will no longer be sign extended.

 

yes, as 0xff is an int primitive type, int fact, it is 0x000000ff, it's not a signed int. that it bitwise AND b would get the result into the int type, and then a narrowing primitive conversion to char.

 

the process:

1. byte b is promoted to int, after bitwise AND, it becomes 0x000000ff

2. after casting to char, it becomes 0x00ff which is 255

 

the operands would be promoted to an int, cause there's a law that all arithmetic operations do this to operands of type short, byte or char. this promotion is a widening primitive conversion, so no information is lost.

 

if it is operated like this without the bit mask:

byte b = -1;
char c = (char)b;

because byte is a signed type, sign extension occurs when converting the byte value –1 to a char . The resulting char value has all 16 bits set, so it is equal to 216 – 1, or 65,535.

 

 

referenced by JavaPuzzler Solution 31 and Puzzle 6 Multicast

分享到:
评论

相关推荐

    suppress(用于MATLAB消除黑框)

    在MATLAB编程环境中,"suppress"函数通常被用来控制命令行输出或者图形窗口的行为。这个功能对于优化代码的可读性、控制程序运行时的视觉干扰以及自动化脚本的执行非常有用。当我们提到"suppress(用于MATLAB消除黑框...

    suppress,matlab GUI 生成exe文件

    在提供的压缩包中,可能包含了用于替换或更新GUI图标的文件,如`suppress.exe`可能是生成的exe文件,`suppress.ini`可能是配置文件,其中包含了关于GUI设置的信息,包括图标更改的指令。`source.nsi`文件通常用于...

    001-glib-gdate-suppress-string-format-literal-warning.patch

    001-glib-gdate-suppress-string-format-literal-warning.patch 001-glib-gdate-suppress-string-format-literal-warning.patch 001-glib-gdate-suppress-string-format-literal-warning.patch

    Kotlin中Suppress的非常规用法示例

    Kotlin 中 Suppress 的非常规用法示例 Kotlin 中的 Suppress 注解是用于忽略特定的编译器警告的,类似于 Java 中的 SuppressWarnings。 Suppress 可以用于消除编译器警告和错误,使得代码能够顺利通过编译。 常规...

    前端开源库-suppress-chunks-webpack-plugin

    `suppress-chunks-webpack-plugin` 就是一个专门针对这种情况设计的插件,它的主要功能是抑制特定的Webpack打包块(chunks),从而优化生产构建的性能和体积。 Webpack 打包过程中产生的 chunks 可以理解为不同的...

    NX二次开发UF-ASSEM-suppress-instances 函数介绍

    NX二次开发UF_ASSEM_suppress_instances 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

    NX二次开发UF-ASSEM-suppress-array 函数介绍

    NX二次开发UF_ASSEM_suppress_array 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的专业...

    NX二次开发UF-ASSEM-ask-suppress-state 函数介绍

    NX二次开发UF_ASSEM_ask_suppress_state 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

    NX二次开发UF-DRF-ask-suppress-view-update 函数介绍

    NX二次开发UF_DRF_ask_suppress_view_update 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    NX二次开发UF-DRF-ask-suppress-pre-zeros 函数介绍

    NX二次开发UF_DRF_ask_suppress_pre_zeros 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

    NX二次开发UF-DRF-set-suppress-view-update 函数介绍

    NX二次开发UF_DRF_set_suppress_view_update 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    NX二次开发UF-DRF-set-suppress-pre-zeros 函数介绍

    NX二次开发UF_DRF_set_suppress_pre_zeros 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域的...

    NX二次开发UF-DRAW-set-suppress-view-updat 函数介绍

    NX二次开发UF_DRAW_set_suppress_view_updat 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    NX二次开发UF-DRAW-ask-suppress-view-updat 函数介绍

    NX二次开发UF_DRAW_ask_suppress_view_updat 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等领域...

    NX二次开发UF-DRF-ask-obj-suppress-pre-zeros 函数介绍

    NX二次开发UF_DRF_ask_obj_suppress_pre_zeros 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等...

    NX二次开发UF-DRF-ask-ang-obj-suppress-zeros 函数介绍

    NX二次开发UF_DRF_ask_ang_obj_suppress_zeros 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等...

    NX二次开发UF-ASSEM-ask-part-occ-suppress-state 函数介绍

    NX二次开发UF_ASSEM_ask_part_occ_suppress_state 函数介绍,Ufun提供了一系列丰富的 API 函数,可以帮助用户实现自动化、定制化和扩展 NX 软件的功能。无论您是从事机械设计、制造、模具设计、逆向工程、CAE 分析等...

    plsqldev12.0.4.1826x64主程序+ v12中文包+keygen

    You can now suppress a hint or warning for a specific line of code by adding a "-- Ignore" comment. The Code Contents pane now shows local subprograms within a procedure/function in a separate folder....

    Kotlin基础学习之Deprecated与Suppress注解使用

    在Kotlin编程语言中,`@Deprecated`和`@Suppress`是两个重要的注解,它们在代码维护和警告管理方面起着关键作用。本文将详细讲解这两个注解的使用及其重要性。 首先,我们来看`@Deprecated`注解。在Java中,标记一...

Global site tag (gtag.js) - Google Analytics