一、什么是二进制
在说二进制之前,我们先回想下平常我们用的最多的十进制,1,0,50,-100,899等等这些数字我们在熟悉不过了,牵扯到我们的衣食住行方方面面。组成十进制的数字符号集合为{0,1,2,3,4,5,6,7,8,9}共十个元素。十进制的运算规则为: 1.“满十进一,借一当十” 2.按位权展开,第一位权为10^0, 第二位位权为10^1 ……以此类推,第N位10^(N-1),这也是就是我们说的位置化数字系统,在数字中符号所占据的位置决定了其表示的值 例如,十进制数字698的位置化表示:



二、原码
存储到计算机之中的数据都被转换为了二进制形式,但是还有问题需要解决:如何存储数字的符号? 如果不考虑数字的符号,对于n位存储单元,所能存储的范围为[0~2^n-1],例如n=4时,它能表示的范围就是0 ~ 15。 但我们都知道,数字有正数、负数之分,因此原码表示法规定了,在n位的存储单元中,使用最左1个二进制位表示符号,0表示正,1表示负,其余位置表示数字的绝对值。 例如n=4的存储单元,所能存储的无符号数范围为[0~2^n-1],最左位当做符号位置后,可以仅用剩余3位表示数字的绝对值。

三、反码
原码在计算机存储整数中并不常用,计算机使用二进制补码来表示n位存储单元中的有符号整数。
反码是由原码转换为补码的中间形式,该运算可以应用到任何整数,无论是正的还是是负的,进行反码运算时,最左边符号位保持不变,当此数字为负数时,其绝对值位各位求反;正数反码为这个数本身
例如n=4位存储单位中数字3的反码:


四、补码
几乎所有计算机都使用使用二进制补码来表示n位存储单元中的有符号整数。那么如何获得一个数补码,规则很简单: 正数的补码为其本身; 负数的补码为其反码在加上1得到的结果;
例如在4位的存储单位中,-5的补码表示:

例如在n=4位的存储单元中,还原1 0 1 1所表示的整数:

所以总结起来,计算机以二进制补码存储正数遵循以下步骤: ①将整数转换为n位的二进数 ②如果整数是正数或零,以其原样存储,如果是负数,计算机取其补码。 而从二进制补码还原为整数,遵循如下步骤: ①如果最左位是1,计算机取其补码。如果是0,不进行任何操作 ②将该整数转换为十进制
四、为什么使用补码
计算机采用二进制补码表示的优点在于加法和减法之间没有区别,当遇到减法运算时,计算机可以简单的把它转变为加法,只需要求为第二个数求二进制的补码即可。这样符号位就能参与运算,降低了计算机逻辑电路复杂度。 例如在n=4位存储单元,计算机计算5-3时,可以按照5+(-3)处理
