我晕,刚才打了一大段结果论坛忽然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的灵魂,必须学好。

解决方案 »

  1.   

    看think in java,很好地说明了OO与JAVA的关系。慢慢来吧。
      

  2.   

    1:
    //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