原码,反码,补码

眉间皱痕 提交于 2020-02-02 13:42:17

计算机可以有三种编码方式表示一个数。对于正数因为三种编码方式的结果都相同

出于计算方便的原因需要有反码、补码的存在

原码

第一位表示符号, 其余位表示值

8位二进制

[+1]原 = 0000 0001
[-1]原 = 1000 0001

范围为:

[1111 1111 , 0111 1111] => [-127 , 127]

反码

  • 正数的反码是其本身
  • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反

补码

  • 正数的补码就是其本身
  • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (反码加一)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补

机器可以只有加法而没有减法

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原

参考:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!