int value = 0x00000000;
value |= (byte) 0x80;预计的value值应该是0x00000080,但是结果变为了0xffffff80这是为什么呢?环境为jdk1.6 

解决方案 »

  1.   

    byte的关系吧
    byte是8位的,0x80第一位是1,扩展成int前面就都补1了
      

  2.   

    因为 byte 的 0x80 是 -128 啊。把 byte -128 与 int 类型运算,会转为 int 的 -128,因此结果就是那个了。
      

  3.   

    byte型扩展为int型应该数值不会变化吧?前面全部补1的话值就改变了
      

  4.   

    16进制   ->    2进制
    0x80          0000 0000 0000 0000 0000 0000 1000 0000
    转byte,截取低8位后为-128:
                  1000 0000
    位操作会自动转成int,但数值不变,仍然是-128,变成:
                  1111 1111 1111 1111 1111 1111 1000 0000所以.....