《数字逻辑设计与计算机组成》一3.5 2的补码加法/减法器

简介: 本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,第3.5节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.5 2的补码加法/减法器

对于带符号的算术运算,它们的数值可以表示成正数或者负数的2的补码。两个n位数字(A)2s和(B)2s的减法可以表示成(A)2s和(- B)2s的加法,如下所示,这里(B)1s表示简单地对B的每一位进行取反,即B的反码。
2的补码减法算法
image

图3-11展示了2的补码减法算法过程。“+ 1”用一位进位输入来实现。

image
image

类似地,下列算法描述了n位2的补码加法。在这个例子中,输入B没有变化且进位输入设为0。
2的补码加法算法
image

2的补码算术产生n位2的补码输出,进位输出被忽略且不被计算到最后结果中。然而,结果还是有可能会溢出。例如,考虑用1减最小的n位二进制补码负数,或者1加上最大的n位2的补码正数。在两个例子中,结果差值和和值都会超过n位负数和n位正数2的补码表示的范围。
当A和B都是2的补码正数时,它们的符号位为0。在这个例子中,为了保证A + B不会溢出,加到符号位的进位必须为0。这样会产生0作为进位输出;不然就会产生溢出。例如,考虑图3-12中的例子a和c。在例子a中,A = (0111)2s = 7且B = (0001)2s = 1都是2的补码正数,此外,A是最大的4位正数。如图中所示,当B = 1与A = 7相加,结果为(1000)2s = - 8,一个负数,这就意味着溢出。在这个例子中,c3 = 1,且当其与都为0的符号位相加的时候,这就让符号位之和变为1(负数)且c4 = 0≠c3 = 1。要使溢出情况不会出现,当两个2的补码正数相加时,c3和c4都必须为0。
在例子c中,当两个负数A = - 1和B = - 2相加,符号位都为1,如果c3 = 1产生c4 = 1
则A + B不会溢出。否则,结果就会溢出,生成一个正数为结果。从例子a和例子c中得到的结论是当c3 = c4时,结果不会溢出,不论A和B是正数还是负数的2的补码形式。
例子b和d展示了减法。在这个例子中,等式A - B就是在计算A + (B)1s + 1。在例子b中,当B = 1(正数)去减A = - 8时(最小的4位2的补码负数),c3为0,加到符号位(都为1)上时,产生7为结果(不正确的结果)。注意,c4 = 1≠c3 = 0。在例子d中,A = - 1和B = - 2都为2的补码负数,且当相减时,结果不会溢出。注意到在这个例子中,c3 = 1与c4 = 1(c3 = c4)值相等。两个正数相减也不会产生溢出的情况。
表3-2为n位2的补码加法器/减法器溢出信号ovf的真值表。进位cn - 2与符号位相加产生最终进位cn - 1。公式(3-14)定义了溢出信号:
image

图3-13展示了两个框图:a)2的补码加法器和b)2的补码加法器。两个框图只有输入(B)2s和处理进位不相同。在图3-13a中,输入B与A相加,并没有改变表示形式。在图3-13b中,输入B在与A相加之前,经过了按位非运算。这样,我们可以只有一个加法器模块来组合两个电路框图实现一个加法器/减法器模块。可以用反相器模块来转换结果,当加法时输出B,当减法时输出B的非,当运算减法时,E = en - 1…e1e0等于B的反码或者表示为(B)1s。模式信号m用来表示运算模式,当m = 0(进位输入为0)时,运行加法,当m = 1(进位输入为1),运行减法。

image

image

image

表3-3为一位反相器片的真值表。最后组合设计如图3-14所示,信号m也被用于最初的进位输入值。注意到有信号m的模块与进位输入连接不能用于这几位串行的大型加法器/减法器电路。如果需要设计位串行电路,必须用分开的进位输入作为输入。
image

相关文章
|
5月前
【408计算机组成原理】—原码的乘法运算(九)
【408计算机组成原理】—原码的乘法运算(九)
|
4月前
|
存储
【机组期末速成】计算机的运算方法|进制转换|无符号数与有符号数|数的定点表示与浮点表示|定点运算
【机组期末速成】计算机的运算方法|进制转换|无符号数与有符号数|数的定点表示与浮点表示|定点运算
82 0
|
7月前
计算机内部乘法除法实现
计算机内部乘法除法实现 乘法:先来个例子:7×5可以写成如下的二进制方式,7为乘数,5为被乘数。7×5=0111×0101那么规则就是,按照被乘数的低位到高位依次计算,如果第n位不为0,那么乘数就左移n位,如果第n为为0 ,那么这步运算结果记为0,最后将每一步的结果相加就是最终的计算结果。 除法:依然先来个例子:123/4写成二进制的形式如下,123为除数,4为被除数。123/4=1111...
52 0
计算机内部乘法除法实现
|
4月前
补码浮点数运算(设数的阶码为3位,尾数为6位(均不包括符号位)按机械补码浮点运算规则完成下列[x+y]补运算。)
补码浮点数运算(设数的阶码为3位,尾数为6位(均不包括符号位)按机械补码浮点运算规则完成下列[x+y]补运算。)
120 0
数字逻辑电路设计实验:加法器
数字逻辑电路设计实验:加法器
85 0
【计算机组成原理】定点加减法运算
一、补码加减法的运算方法 1. 补码加法 2. 补码减法 二、溢出及检测 1. 溢出的概念 2. 溢出的检测
177 0
【计算机组成原理】定点加减法运算
|
算法
FPGA-设计一个定点乘法器(原码一位乘法器)
FPGA-设计一个定点乘法器(原码一位乘法器)
294 0
FPGA-设计一个定点乘法器(原码一位乘法器)
|
人工智能 BI
第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
316 0
第三次笔记:算术逻辑单元 电路基本原理 加法器的设计 一位全加器 串行进位加法器 并行进位加法器 补码加减运算器 无符号整数加减法 标志位的生成
|
存储 编译器 C语言
有符号数与无符号数之间运算问题探究
有符号数与无符号数之间运算问题探究
559 0
有符号数与无符号数之间运算问题探究