二进制之:原码、反码、补码

261 阅读1分钟

任何存储于计算机中的数据,其本质都是以二进制码存储

根据冯~诺依曼提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器(据说一开始是有的,后来由于减法器硬件开销太大,被废了 )所以,计算机中的没法直接做减法的,它的减法是通过加法来实现的

1. 原码

最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示

十进制原码
30000 0011
-31000 0011

2. 反码

正数的反码与原码一致;负数的反码是对原码按位取反,只是最高位(符号位)不变

十进制原码反码
30000 00110000 0011
-31000 00111111 1100

3. 补码

正数的补码与原码一致; 负数的补码是该数的反码加1

十进制原码反码补码
30000 00110000 00110000 0011
-31000 00111111 11001111 1101

总结

  • 正数的原码、反码、补码是一致的
  • 负数的补码是反码加1,反码是对原码按位取反,只是最高位(符号位)不变
  • 计算机数字运算均是基于补码的。