【发布时间】:2019-03-13 23:40:25
【问题描述】:
我无法理解为什么 c 在以下程序中等于 -61:
main() {
unsigned int a = 60; // 60 = 0011 1100
unsigned int b = 13; // 13 = 0000 1101
int c = 0;
c = ~a; //-61 = 1100 0011
printf("Line 4 - Value of c is %d\n", c );
}
我确实了解 NOT 运算符在 0011 1100 上的工作原理(解决方案是 1100 0011)。但我不确定为什么十进制数加 1。这是从 unsigned int(来自 a)到有符号 int(来自 c)的某种类型转换吗?
【问题讨论】:
-
这是二进制补码符号的工作原理。
-
11111111是-1,00000000是0。
标签: c bitwise-operators