补码与反码

Posted king0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了补码与反码相关的知识,希望对你有一定的参考价值。

补码 与反码

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

技术图片

 

以上是关于补码与反码的主要内容,如果未能解决你的问题,请参考以下文章

知道 补码,如何 计算 原码

原码反码补码

源码,反码以及补码

原码,反码,补码

原码反码补码,负数表示法

原码反码补码