首页 > 代码库 > 计算机输出的数字是原码还是补码

计算机输出的数字是原码还是补码

数字在计算机中是以补码形式存储的

是否输入一个数,计算机会自动转化成补码形式存储,输出这个数时,计算机会自动把补码转换成原码显示?

例子:

#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,即输出的是它的补码形式

 

 

得出结论,计算机输出的数是补码形式的。

计算机输出的数字是原码还是补码