数字在计算机中是以补码形式存储的
是否输入一个数,计算机会自动转化成补码形式存储,输出这个数时,计算机会自动把补码转换成原码显示?
例子:
#include <stdio.h> main() {
int b; b=-1; printf("%d %x\n",b,b);
b=0xffffffff; printf("%d %x\n",b,b);
b=0x8fffffff; printf("%d %x\n",b,b);
b=0x80000001; printf("%d %x\n",b,b);
b=0x80000002; printf("%d %x\n",b,b);
}
输出结果:
-1的原码为0x80000001,但是输出为ffffffff
0x8fffffff对应的十进制为-268435455(第一位为符号位),输出为-1879048193,对应-0x70000001,即输出的是它的补码形式
0x80000001对应的十进制为-1,输出为-2147483647,对应-0x7FFFFFFF,即输出的是它的补码形式
0x80000002对应的十进制为-2,输出为-2147483646,对应-0x7FFFFFFE,即输出的是它的补码形式
得出结论,计算机输出的数是补码形式的。
时间: 2024-09-30 15:43:58