带符号异或运算

-1 ^ -1 << 5

第一步 -1 << 5
-1 << 5
1000 0001 << 5
1010 0000

第二步 -1 ^ 1010 0000
1000 0001 原码 ^ 1010 0000 原码
负数异或须要用补码
1111 1110 反码 ^ 1101 1111 反码
1111 1111 补码 ^ 1110 0000 补码 = 0001 1111

结果为正数,因此结果为1+2+4+8+16=31
结果若是为负数,须要结果-1,再取反(由 原码 -> 取反 -> +1 补码 得 补码 -1 -> 取反 -> 原码).net

 

参考:https://blog.csdn.net/romeo12334/article/details/82261319blog

相关文章
相关标签/搜索