java中关于&0xFF 的问题

最近遇到一个问题,半天也没想明白,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。

原文地址:https://www.cnblogs.com/leihupqrst/p/6037879.html