点杠点杠点
2015-10-26 13:24
我发现 按位异或 的 定位反转反转 功能 和 按位取反 似乎有着共同的作用。
int a = 10;
printf("按位异或的定位取反功能%d\n按位取反%d\n", a ^ 0xFF, ~a);
结果 245 -11
该代码输出的却不一样。不明白了,求教。
0xFF 这个是只有低8位为1,高位全是0。
整型10 是低4位为 1010,高位全为0,且一般来说是占用32位。
你应该明白了吧,区别就在于高位的行为不一样。
取反是将a高位的0都变成1,这样最高位的符号位也变成1了,所以最终值是负的。
而异或后,a的后8位都取反了,但前24位保持不变。这样值就是245.
Linux C语言结构体
118294 学习 · 162 问题
相似问题