<分区>
请查看以下代码并帮助我理解它
int a=1;
int b=~1;
printf("%d",b);
输出是:
-2
所以这表示 1=(00000001) 当经历 ~ 产生 (11111110) 这是数字 2 的 2 的补码,因此 -2 是答案。 所以 100 将始终被假定为 -4 而不是 4 ?
<分区>
请查看以下代码并帮助我理解它
int a=1;
int b=~1;
printf("%d",b);
输出是:
-2
所以这表示 1=(00000001) 当经历 ~ 产生 (11111110) 这是数字 2 的 2 的补码,因此 -2 是答案。 所以 100 将始终被假定为 -4 而不是 4 ?
最佳答案
Does computer always follow 2's complement method to represent negative number?
没有。
一些计算机使用 1 的补码(其中 ~1 == -0),一些使用“符号和大小”(其中 ~1 == -127),一些使用“偏差”(其中有符号值是“无符号值 -偏差”,其中 ~1 == 127)。对于整数,这些现在都比较少见。
标准 (IEEE-754) 浮点格式并不罕见;这是“符号和幅度”(用于尾数)和“偏差”(用于指数)的完美结合。
关于c++ - 计算机总是按照2的补码法来表示负数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47964887/