我有以下价值:
int x = -51232;
Java 整数是 32 位的,所以在二进制中应该是这样的:
10000000000000001100100000100000
左边的符号位设置为1因为x是负数。
然后我做手术
x = (x & Integer.MAX_VALUE);
Integer.MAX_VALUE是2147483647并且在二进制中是:
01111111111111111111111111111111
左侧为 0,因为值为正。
那么为什么x & Integer.MAX_VALUEyield呢2147432416?运算AND符应该只检索x和Integer.MAX_VALUE共有的位,这应该等同于-x(因为它们不共享相同的符号位)。
这里发生了什么?
幕布斯6054654
潇湘沐
蓝山帝景
随时随地看视频慕课网APP
相关分类