日期:2014-05-20  浏览次数:20718 次

java中byte运算的问题
对字节等计算的细节不是很清楚。

例如我对两个byte进行异或操作:
byte a = 0x74;
byte b = 0x30;
int c = a ^ b;

a的二进制表示为01110100, b表示为00110000,那么异或操作后,按说是10111011。以反码算,数值应为-69才是。
可是我打印出来c的值是68,即01000100。 这是怎么一回事?

另外我想问一下,int c = a ^ b这条语句,从byte扩展到int,它的扩展原则是什么?是直接补0吗?如果直接补零的话,那上边的异或结果应该是187,也不对啊。

------解决方案--------------------
楼主的数据基础要去补一补了。异或运算是同一位置上的两个2进制数相同的取0不同的取1
------解决方案--------------------
你刚好弄反了