目录
一、原码
很简单 就是本身翻译成二进制
比如 2 翻译成2进制就是 00000010
二、反码
因为使用原码进行加法的运算可以实现,但是要是去进行减法的运算很困难,计算机需要进行很多操作,所以想用加法来替代掉减法使用加法来实现减法
3-2 = 3+ (-2)
正数的 源码反码都一样 符号位 1表示负数 0表示正数
所以3 的源码是 00000011 反码也是 00000011
-2 的源码是 10000010 反码(除符号位全部取反)是 11111101
两者相加 (1)00000001 需要把溢出的最高位放到最后去
这涉及到了最高位的进位问题 使得运算效率降低
其次还有 11111111 00000000 都表示0 这种情况产生浪费
三、补码
因此 产生了补码 补码就是 给反码+1
正数的原码反码补码都一样 还是上面那个问题
3 00000011
-2 反码:11111101 补码: 11111110
相加 (1)00000001 溢出位直接抛弃 得到1 避免了最高位的进位问题
11111111 00000000 表示不同 扩大了可以表示的整数范围
补码: 11111111 反码:11111110 原码: 10000001 即:-128