#include<stdio.h>
void main()
{
int a, b, c;
a=5;
b=8;
c= ~(a|b);
printf("%d",c);
}
预期输出为 -13
但结果显示为 -14
。 - 14
怎么样? .
最佳答案
因为你有一台 2 的补码计算机。
- 5 | 8 给出二进制
0101 | 1000 = 1101
= 12 月 13 日 - 用
~
反转它,你会得到1111....0010
。 - 将其表示为有符号类型,那么在 1 的补码中,这将是 -13 dec。
- 但是对于 2 的补码,我们减去 1 得到 -14 dec。
出于与 ~0
相同的原因,给出 2 的补码 -1
而不是 -0
。
关于c - 按位或不运算符如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55692102/