Gee*_*eek 3 java bit-manipulation bit-shift bit
我查看了这个问题,以了解为什么在包括Java在内的大多数语言中都没有算术左移运算符.但是接下来我们如何处理负整数,因为左移会将它抛弃.例如-2 ^ 5,其结果应为负数.
不,除非你提交溢出,否则左移不会抛出符号位.原因?在二进制补码编码中,负数在左侧有所有1,其中正数将全部为零.就像符号位被复制到右边一样.顺便说一下,这正是"符号扩展"这个术语有道理的原因,这就是默认的右移在Java中的作用.
int i = -1;
System.out.format("%3d = %s\n", i, Integer.toBinaryString(i));
i <<= 5;
System.out.format("%3d = %s\n", i, Integer.toBinaryString(i));
Run Code Online (Sandbox Code Playgroud)
版画
-1 = 11111111111111111111111111111111
-32 = 11111111111111111111111111100000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |