现在的位置: 首页 > 算法 > 正文

二进制补码的特点是什么?补码实例分析

2020年01月13日 算法 ⁄ 共 1096字 ⁄ 字号 评论关闭

  补码的特点:

  1. 在补码表示中,用符号位表示数值的正负,形式与原码的表示相同,即0为正,1为负。但补码的符号可以看做是数值的一部分参加运算。

  正数的补码表示就是其本身,负数的补码表示的实质是把负数映像到正值区域,因此加上一个负数或减去一个正数可以用加上另一个数(负数或减数对应的补码)来代替。

  从补码表示的符号看,补码中符号位的值代表了数的正确符号,0表示正数,1表示负数;而从映像值来看,符号位的值是映像值的一个数位,因此在补码运算中,符号位可以与数值位一起参加运算。

  2. 在补码表示中,数值0只有一种表示方法。

  3. 负数补码的表示范围比负数原码的表示范围略宽。纯小数的补码可以表示到-1,纯整数的补码可以表示到-2^n。

  由于补码表示中的符号位可以与数值位一起参加运算,并且可以将减法转换为加法进行运算,简化了运算过程,因此计算机中均采用补码进行加减运算。

  为什么负数的补码的求法是反码+1

  因为负数的反码加上这个负数的绝对值正好等于1111,在加1,就是10000,也就是四位二进数的模,而负数的补码是它的绝对值的同余数,可以通过模减去负数的绝对值得到它的补码,所以负数的补码就是它的反码+1。

  补码的实例

  接下来就做一做四位二进制数的减法(先不引入符号位)。

  0110-0010,6-2=4,但是由于计算机中没有减法器,没法算。

  这时候,想想时钟运算中,减去一个数,是可以等同于加上另外一个正数(同余数),这个数与减数相加正好等于模。

  也就是四位二进制数最大容量是多少?其实就是2^4=16(10000)。

  那么2的同余数,就等于10000-0010=1110,16-2=14。

  既然如此,0110-0010=0110+1110=10100,6-2=6+14=20。

  按照这种算法得出的结果是10100,但是对于四位二进制数最大只能存放4位,如果低四位正好是0100,正好是想要的结果,至于最高位的1,计算机会把它放入psw寄存器进位位中,8位机会放在cy中,x86会放在cf中,这里不做讨论。

  这个时候,再想想在四位二进制数中,减去2就相当于加上它的同余数(至于它们为什么同余,还是建议看《计算机组成原理》)。

  但是减去2,从另一个角度来说,也是加上-2,即加上-2和加上14得到的二进制结果除了进位位,结果是一样的。如果我们把1110的最高位看作符号位后就是-2的补码,这可能也是为什么负数的符号位是1,而不是0。

  部分正负数的二进制补码表示

  到这里,原码、反码的问题,补码基本解决了。

  在补码中也不存在-0了,因为1000表示-8。

抱歉!评论已关闭.