码迷,mamicode.com
首页 > 其他好文 > 详细

补码与反码

时间:2019-02-13 12:29:06      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:family   inf   类型   因此   lse   span   无符号   出现   补码   

补码 与反码

计算机中一般采用补码的形式来简化减法运算和逻辑运算。在电路功能实现是,简化减法运算可以减少多余的电路,降低了复杂度。每个进制系统都有两种类型的补码:基数补码和基数减1补码(基数反码)

1.基数反码

定义:对于一个数字:有n位,且进制是r,的数字是N,其反码的定义是(rn -1-N ;例如对于546700的反码的运算就是

106-1 =999999

999999-546700=453299

二进制的反码 :对于10001

Rn-110000-1=1111

1111-10001=01110=1110

对于任意n位,相当于n1-N 1-1=01-0=1所以相当于 求反操作。1改为00改为1

  1. 基数补码

定义:对于一个数字:有n位,且进制是r,的数字是N,其反码的定义是rn -N

对于一个十进制便就是10n-N

     012398的补码就是100000-012398=987602

二进制的补码:

 对于1101100的补码就是0010100

快捷方法: 不改变最低位的0和第一出现的1

  1. 补码的减法

利用借位概念的直接减法在小学就教过了。这种方法是,当被减数比减数小时高位借一个1。人们用纸和笔来进行减法运算时,这种方法确实很好,而要用硬件来实运算时,就较为复杂了,不如补码的算法。

两个有n个数字的进制的无符号数减法M-N可按以下步骤来进行:

1)将被减数M与减数N的补码相加,即

M+(rn-N)=M-N+rn

2)IfM>=N)加起来的结果本身就会产生rn的进位,所以可以要减去rn的进位,及忽略左边第一位

3)else 不会产生进位rn-N-M)也就是N-M的基数补码,所以在结果前加负号。

技术图片技术图片

 

技术图片

 

  1. 利用二进制反码来进行无符号减法

前面以及知道,反码比补码少1,因此,将被减数与减数的补码的相加产生的和,只有当末端进位时,该数比正确结果少1,既不与需要加1了。

技术图片

 

补码与反码

标签:family   inf   类型   因此   lse   span   无符号   出现   补码   

原文地址:https://www.cnblogs.com/king0/p/10369112.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!