解决方案 »

  1.   

    因为在Java中,所有数据的表示方式都是以补码形式来表示;然后通过补码转化到原码,结果就出来了!
      

  2.   

    首先Integer的取值范围是-2^31到2^31-1,其实2的二进制的表示应该为0000000000000000000000000000010, 第一位是符号位0表示正数,取反之后为11111111111111111111111111111101,符号位变成1了表示负数,二进制转为负数十进制的步骤如下:
    1.除去符号位减1,结果为:1111111111111111111111111111100; ②除去符号位,按位取反;结果为:0000000000000000000000000000011; ③源码转成相应的十进制,结果为-3。 详细出处参考:http://www.jb51.net/article/34133.htm