我晕,刚才打了一大段结果论坛忽然down了......(1) Java中负整数在左端补"1",填充够32位。
-8: 111111111....1000而
">>>"是“无符号右移”,对于正整数,>>>1等价于/2,
但是
-8>>>1得到:111111...100
这个数被当成unsigned int处理,就是2147483644
(Integer.MAX_VALUE是2147483647,即1111111.....11111111,刚好多了11)(2)面向对象是Java的灵魂,必须学好。
-8: 111111111....1000而
">>>"是“无符号右移”,对于正整数,>>>1等价于/2,
但是
-8>>>1得到:111111...100
这个数被当成unsigned int处理,就是2147483644
(Integer.MAX_VALUE是2147483647,即1111111.....11111111,刚好多了11)(2)面向对象是Java的灵魂,必须学好。
//int -> binary(32 bit)
public static void pBinInt(int i) {
System.out.println(Integer.toString(i) + ":");
for(int j=31;j>=0;j--) {
if(((1<<j) & i)!=0)
System.out.print("1");
else
System.out.print("0");
}
System.out.println();
}
调用:
pBinInt(-8);
pBinInt(-8>>>1); // >>>无符号右移一位结果:
-8:
11111111111111111111111111111000
2147483644:
01111111111111111111111111111100