按位异或和按位取反的相似之处

来源:6-3 Linux C位运算之按位异或

点杠点杠点

2015-10-26 13:24

我发现  按位异或  的  定位反转反转  功能  和  按位取反  似乎有着共同的作用。

int a = 10;
 printf("按位异或的定位取反功能%d\n按位取反%d\n", a ^ 0xFF, ~a);

结果  245  -11

该代码输出的却不一样。不明白了,求教。

写回答 关注

1回答

  • onemoo
    2015-10-29 14:45:47

    0xFF 这个是只有低8位为1,高位全是0

    整型10 是低4位为 1010,高位全为0,且一般来说是占用32位。

    你应该明白了吧,区别就在于高位的行为不一样。

    取反是将a高位的0都变成1,这样最高位的符号位也变成1了,所以最终值是负的。

    而异或后,a的后8位都取反了,但前24位保持不变。这样值就是245.

    点杠点杠点

    我后来发现这个问题了。纯属误解。谢谢

    2015-10-29 17:43:43

    共 1 条回复 >

Linux C语言结构体

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

118294 学习 · 162 问题

查看课程

相似问题