原码,反码,补码

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

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

原码

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

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]原

参考:

posted @ 2017-07-18 15:51  buzzjan  阅读(227)  评论(0编辑  收藏  举报