最近遇到一个问题,半天也没想明白,byte temp = 0xA0,为什么System.out.println(temp),打印的值为:-96;而System.out.println(temp&0xFF)为:160。

原因是:第一种temp为byte类型,直接将1010 0000转化成11111111 11111111 11111111 10100000,然后补码输出为-96;第二种方法中虽然显示为0xFF,但其实是整形,所以0xFF实际为0x00FF,temp->11111111 11111111 11111111 10100000,&运算后为:160,如果你写成temp&(byte)0xFF,则值变成-96。temp^0xFF为-161。

相关文章:

  • 2021-12-20
  • 2021-06-19
  • 2022-02-04
  • 2021-11-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-25
猜你喜欢
  • 2021-04-07
  • 2021-04-04
  • 2021-08-12
  • 2022-12-23
  • 2021-11-12
  • 2021-11-30
  • 2022-12-23
相关资源
相似解决方案