3 位最多可以容纳 7 (4 + 2 + 1)。我正在尝试使用按位运算来计算它。
3 is 0b011
~3 is 0b100
按位或我期望 0b111(即 7)。相反,我得到了
int result = (~3) | 3;
printf("%i\n", result);
-1
我做错了什么?
最佳答案
你做的一切都是对的:N | ~N
产生一个由全 1 组成的二进制表示形式的数字。这样的数字在 two's compliment 中被解释为 -1
负数的表示。
关于c - 为什么以下按位运算会返回意外结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16159732/