两负数异或的问题
int x = -100;
int y = -1;
int z = x^y;
最后z= 99 而不是 101 为什么呢?
最高位符号位异或为0变正数, 最低位0^1应该变1. 也就是增加+1. 现在变成-1了.
请指教. 谢谢. C 异或 负数
[解决办法]
int以2个字节为例:
-100的补码:1001 1100
-1的补码: 1111 1111
异或后: 0110 0011
结果就是十进制99
[解决办法]
LZ还能说出-100存的啥样子?
[解决办法]
数据用补码表示,估计是你的补码搞错了吧!