直接复制到ide运行观察较为方便

解决方案 »

  1.   

    int是4个字节的,对于第一个问题,(int)0xff代表得是整数的255,换成二进制就是00000000 00000000 00000000 11111111,这个时候与-120(即:11111111 11111111 11111111 10001000)进行与运运算,结果就是00000000 00000000 00000000 10001000也就是136;而(byte)0xff代表的是11111111,java中运算最低是以int类型来的,所以在与运算时自动将(byte)0xff转成int类型的,也就是11111111 11111111 11111111 11111111(因为(byte)0xff未负数),所以此时与-120进行与运算的结果是-120
      

  2.   

    在进行位运算时,如果对于结果是怎么出现的,可将参加位运算的数的二进制输出,这样子会容易明白很多。可以通过用Integer.toBinaryString(int)来输出某个数的二进制表示形式,如Integer.toBinaryString(-120)可看到-120的二进制形式、Integer.toBinaryString((byte)0xff)可看到(byte)0xff的二进制形式