为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

结果  245  -11

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

正在回答

1 回答

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

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

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

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

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

0 回复 有任何疑惑可以回复我~
#1

点杠点杠点 提问者

我后来发现这个问题了。纯属误解。谢谢
2015-10-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信