组成原理,除法器

二.不恢复余数法(加减交替法)除法器
1.1 设计
1.1.1 设计原理
对两个正数采用不恢复余数的算法的一般步骤如下。

1)r 1=x-y ,若r 1<0,同时恢复余数:r 1=r 1+y 。

否则,商q 0=1。

说明商大于0。

根据计算机中的定点小数表示规定,超过了数的表示范围,作溢出处理。

2)如果已经求得第i 次的部分余数r ,若r i <0,则上商为q i -1=0,r i +1=2r i +y 。

上次多减的y 在这次运算中补回来了,否则,商q i =1,ri+1=2r i -y 。

3)不断循环2),直到求得所需要的商的位数(n+1)。

例: x=0.1001, y=-0.1011, 用不恢复余数法求 x/y=? 解: 求解过程如下:
所以 x ÷ y 的商 [q ]原 = 0.1101,余数[ r ]原 = 0.00000001
1.1.2 设计环境
MASM
1.1.3.
程序运行界面
被除数x /余数r
商数q
说明
0 0.1 0 0 1 +[-y ]补
1 1.0 1 0 1 x 减y
1 1.1 1 1 0 余数r 0<0,商0
←
1 1.1 1 0 0 0 商0,r 和q 左移一位 +[y ]补
0 0.1 0 1 1 加y
0 0.0 1 1 1 余数r 1>0,商1
←
0 0.1 1 1 0 0.1 商1,r 和q 左移一位 +[-y ]补
1 1.0 1 0 1 减y
0 0.0 0 1 1 余数r 2>0,商1
←
0 0.0 1 1 0 0.1 1 商1,r 和q 左移一位
+[-y ]补
1 1.0 1 0 1 减y
1 1.1 0 1 1 余数r 3<0,商0
←
1 1.0 1 1 0 0.1 1 0 商0,r 和q 左移一位
+[y ]补
0 0.1 0 1 1 加y 0 0.0 0 0 1
余数r 4>0,商1
1 1 0 1 商1,仅q 左移一位
运行程序,显示“Enter the numbers :”
依次输入2个四位小数作为被除数和除数,如0.1001就输入1001(被除数必须小于除数) 显示结果“The answer is : 商 余数” 尚存除尽时余数显示有问题的bug ,待改进
1.2 程序流程图
程序开始,建立DA TA 段
调用IN_DL 过程,读取被除数与除数分别存放在BL 、BH ,将除数的补码存至BHB
BL=BL+BHB , CX=4
BL<0
SHANG+=0 SHANG*=2SHANG
BL*=2BL BL=BL+BH
SHANG+=1 SHANG*=2SHANG BL*=2BL BL=BL+BHB
CX-=1
调用Out_DL_oAX 过程,输出SHANG 和BL ,利用PS 确定正负
程序结束,中断返回
CX=0?
Y
N
Y
N
1.3 程序分析
1.3.1 输入模块IN_DL
IN_DL PROC NEAR
PUSH AX
PUSH CX
XOR DL, DL
MOV CX, 4
INPUT: MOV AH, 1 //调用中断,读取一位输入的ASCII码INT 21H
CMP AL, '0' //输入0
JE Num01
CMP AL, '1' //输入1
JE Num01
CMP AL, 32 //输入空格
JE EOI
CMP AL, 45 //输入负号
JE XPS
CALL ERROR_I //其他输入,视为错误,调用ERROR_I XPS: NOT PS //符号位取反
INC CX //由于输入了负号,需多输入一位数字
Num01: SHL DL, 1
SUB AL, '0' //将数字的ASCII码转为数字
ADD DL, AL //存放一位
LOOP INPUT
EOI: P OP CX //输入完毕,结束
POP AX
RET
IN_DL ENDP
1.3.2 错误信息模块ERROR_I
作用:输入错误时调用,中断程序,并在屏幕上输出:“Error Input!!”的信息
1.3.3 输出模块Out_DL_oAX
Out_DL_oAX PROC NEAR
PUSHF
PUSH DX
PUSH CX
PUSH AX
MOV DH, DL
MOV CL, 8
SUB CL, AL
SHL DH, CL
MOV CL, AL
DIS: SHL DH, 1
JC DIS1
MOV DL, '0'
JMP EOD
DIS1: MOV DL, '1'
EOD: MOV AH, 2
INT 21H
LOOP DIS
;LEA DX, LINE
;MOV AH, 9
;INT 21H
POP AX
POP CX
POP DX
POPF
RET
Out_DL_oAX ENDP
1.3.4 程序主体
BEG: ADD BL, BHB
AND BL, 3FH XUNHUAN: MOV F, 30H
AND F, BL
CMP F, 30H
JE FU
ADD SHANG, 1
SHL SHANG, 1
SHL BL, 1
ADD BL, BHB
AND BL, 3FH
JMP HUIQUXUNHUAN FU: ADD SHANG, 0
SHL SHANG, 1
SHL BL, 1
ADD BL, BH
AND BL, 3FH HUIQUXUNHUAN: LOOP XUNHUAN
MOV F, 30H
AND F, BL
CMP F, 30H
JE LASTFU
ADD SHANG, 1
JMP RESULT
LASTFU: ADD SHANG, 0
1.4.心得体会:
在这次的课程设计增进了我很多对汇编语言的理解,也学会了与同学们合理合作,共同成功。

虽然编程技巧还略显生疏(比如有除尽余数不为0的bug),但已经对汇编语言的概念和使用加深了不小的了解,我会在接下来的课程设计中继续并更加努力做出更好的作品。

合集下载

计算机组成原理第二章课后习题答案

计算机组成原理第二章课后习题答案

第二章运算方法和运算器练习一、填空题1. 补码加减法中,(符号位)作为数的一部分参加运算,(符号位产生的进位)要丢掉。

2. 为判断溢出,可采用双符号位补码,此时正数的符号用(00)表示,负数的符号用(11)表示。

3. 采用双符号位的方法进行溢出检测时,若运算结果中两个符号位(不相同),则表明发生了溢出。

若结果的符号位为(01),表示发生正溢出;若为(10),表示发生负溢出。

4. 采用单符号位进行溢出检测时,若加数与被加数符号相同,而运算结果的符号与操作数的符号(不一致),则表示溢出;当加数与被加数符号不同时,相加运算的结果(不会产生溢出)。

5. 利用数据的数值位最高位进位C和符号位进位Cf的状况来判断溢出,则其表达式为over=(C⊕Cf)。

6. 在减法运算中,正数减(负数)可能产生溢出,此时的溢出为(正)溢出;负数减(正数)可能产生溢出,此时的溢出为(负)溢出。

7. 补码一位乘法运算法则通过判断乘数最末位Yi和Yi-1的值决定下步操作,当YiYi-1=(10)时,执行部分积加【-x】补,再右移一位;当YiYi-1=(01)时,执行部分积加【x】补,再右移一位。

8. 浮点加减运算在(阶码运算溢出)情况下会发生溢出。

9. 原码一位乘法中,符号位与数值位(分开运算),运算结果的符号位等于(两操作数符号的异或值)。

10. 一个浮点数,当其补码尾数右移一位时,为使其值不变,阶码应该(加1)。

11. 左规的规则为:尾数(左移一位),阶码(减1)。

12. 右规的规则是:尾数(右移一位),阶码(加1)。

13. 影响进位加法器速度的关键因素是(进位信号的传递问题)。

14. 当运算结果的补码尾数部分不是(11.0×××××或00.1×××××)的形式时,则应进行规格化处理。

当尾数符号位为(01)或(10)时,需要右规。

《计算机组成原理》3.6运算器的组成

《计算机组成原理》3.6运算器的组成
其ALU可实现八种运算功能,用外部送入的三位控制信号I5I4I3的 编码值,实现八种功能的选择控制。
由外部送来的三位控制码I2I1I0控制R、S的多路选择器选择输入。 运算器中有1个16×4位的通用寄存器组和一个4位的Q寄存器。 ALU给出的四个状态信息。 RAM3、RAM0、Q3、Q0:移位寄存器接收与送出移位数值的引线 运算器的四位输出为Y3~Y0,它可以是ALU的运算结果,也可以
整理课件
3.6.2 浮点运算器
由于浮点运算中阶码运算与尾数运算分别进行,因此 浮点运算部件应包括尾数部件和阶码部件两个部分。
整理课件
实现四则运算的浮点运算器
整理课件
尾数运算部件
进行尾数的加减乘除运算。 由寄存器R0、R1、MQ及并行加法器Fm组成。 R0、R1:暂存操作数。其中R0也称为累加器,用于存 放运算结果。 MQ:乘商寄存器 用于进行乘除运算,R0、MQ具有联合左移、右移的功 能,实现方法与定点乘、除法器相类似。 R1具有右 移功能,以实现对阶移位。
3.6 运算器组成
3.6.1定点运算器
1.基本结构
运算器结构的基本组成部分:包括ALU、寄存器、多 路开关、标志/状态触发器、移位器和数据总线等基 本逻辑部件。
运算器设计主要是围绕着ALU和寄存器同数据总线之 间如何传送操作数和运算结果而进行的。
整理课件
(1)单总线结构运算器
整理课件
(2)双总线结构运算器
Q /2→ Q 2Q→ Q
整理课件
Y 输出 F F A F F F F F
例:给出实现指令R0+R1→M的控制信号。
解: 选择R0:A地址=0000; 选择R1:B地址=0001; R=A,S=B:I2I1I0=001; R+S:I5I4I3=000; 输出运算结果F(Y=F):I8I7I6=001

fpga除法器原理

fpga除法器原理

fpga除法器原理小伙伴,今天咱们来唠唠FPGA除法器的原理,这可超有趣的呢!你知道吗,在FPGA里搞个除法器就像是在一个神奇的数字小世界里做分配游戏。

想象一下,你有一堆小糖果(被除数),要分给几个小朋友(除数),每个小朋友能得到多少糖果呢,这就是除法要干的事儿。

在FPGA里,有几种办法来做这个除法器。

有一种比较简单直接的,叫恢复余数除法。

这就像是你每次分糖果的时候,先试着给每个小朋友一颗,要是发现给多了,就把糖果拿回来(恢复余数),再重新分。

在数字的世界里呢,就是先假设除数能被被除数除,然后做减法,如果减出来的结果是负数,那就说明给多了,要把除数再加回去,然后调整一下商的值。

这个过程就像小朋友分糖果时小心翼翼的试探,特别有趣。

还有一种是不恢复余数除法。

这个就有点像比较大胆的分糖果方式啦。

不管能不能除得动,先减了再说,如果减出来是负数,那就知道多减了,但是不用恢复到原来的数,而是直接调整商的值,然后继续下一轮的计算。

这种方式就像是在分糖果的时候比较有冒险精神,虽然可能一开始分错了,但是很快就能调整过来。

那在FPGA里具体怎么实现这些操作呢?这就用到了寄存器和逻辑电路啦。

寄存器就像是一个个小盒子,用来存放数字,被除数、除数、商还有余数都住在这些小盒子里。

逻辑电路呢,就像是一群小助手,它们负责做减法、判断正负、调整商的值这些工作。

比如说,要做减法的时候,逻辑电路就像一个超级计算器,快速算出结果,然后根据结果是正还是负,来决定下一步该怎么做。

而且哦,FPGA除法器还得考虑精度的问题呢。

就像分糖果的时候,你要精确到每一颗糖果,在数字里也是,有时候我们需要得到很精确的商和余数。

这时候就要看我们给这个除法器设定的规则啦,是要整数的结果呢,还是可以有小数部分的结果。

如果是要小数部分,那就更复杂一点,就像要把糖果分成小碎块一样,得更加小心地计算。

你可能会想,这听起来好复杂呀。

其实呢,就像搭积木一样。

我们把这些小的操作,像减法、判断、调整商,当成一个个小积木块,然后按照除法的规则把它们组合起来,就成了一个除法器啦。

《计算机组成原理第4章数值的机器运算

《计算机组成原理第4章数值的机器运算
15
3.移位功能的实现 3.移位功能的实现 在计算机中, 在计算机中 , 通常移位操作由移位寄存 器来实现, 器来实现,但也有一些计算机不设置专门的移 位寄存器,而在加法器的输出端加一个移位器。 位寄存器,而在加法器的输出端加一个移位器。 移位器是由与门和或门组成的逻辑电路( 移位器是由与门和或门组成的逻辑电路(实际 是一个多路选择器) 可以实现直传( 是一个多路选择器 ) , 可以实现直传 ( 不移 左斜一位送(左移一位) 位)、左斜一位送(左移一位)和右斜一位送 右移一位)的功能。 (右移一位)的功能。
10
3.补码加减运算规则
⑴参加运算的两个操作数均用补码表示; 参加运算的两个操作数均用补码表示; 符号位作为数的一部分参加运算; ⑵符号位作为数的一部分参加运算; 若做加法, 则两数直接相加, 若做减法, ⑶ 若做加法 , 则两数直接相加 , 若做减法 , 则 将被减数与减数的机器负数相加; 将被减数与减数的机器负数相加; ⑷运算结果仍用补码表示
第4章数值的机器运算
运算器是计算机进行算术运算和逻辑运 算的主要部件, 算的主要部件,运算器的逻辑结构取决于机器 的指令系统、数据表示方法和运算方法等。 的指令系统、数据表示方法和运算方法等。本 章主要讨论数值数据在计算机中实现算术运算 和逻辑运算的方法, 和逻辑运算的方法,以及运算部件的基本结构 和工作原理。 和工作原理。
8
4.2.2 补码加减运算
1.补码加法 补码加法 两个补码表示的数相加,符号位参加运算, 两个补码表示的数相加,符号位参加运算,且两 数和的补码等于两数补码之和, 数和的补码等于两数补码之和,即: [X+Y]补=[X]补+[Y]补
2.补码减法 补码减法
根据补码加法公式可推出: 根据补码加法公式可推出: [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补 从补码减法公式可以看出,只要求得[-Y] 补 , 就 从补码减法公式可以看出 , 只要求得 可以变减法为加法。 不管Y的真值为正或为负 的真值为正或为负, 可以变减法为加法 。 不管 的真值为正或为负 , 已知 [Y]补求[-Y]补的方法是:将[Y]补连同符号位一起求反, 的方法是: 连同符号位一起求反, 末尾加“ 被称为[Y] 的机器负数, 末尾加 “ 1” 。 [-Y]补 被称为 补 的机器负数 , 由 [Y] 补 的过程称为对[Y] 变补(求补) 求[-Y]补的过程称为对 补变补(求补),表示为 [-Y]补=[[Y]补]变补 9

计算机组成原理—运算方法和运算器-6

计算机组成原理—运算方法和运算器-6

规则:尾数右移1位,高位补符号位,阶码加1
例如:10.011101×2-110 右规后11.001110(1)×2-111 ②补码结果是00.0...01.....或11.1...10...时,需向左规格化(左规) 规则:尾数左移1位,低位补0,阶码减1,直到规格化 规格化:原码尾数值最高位为1,补码尾数值最高位与符号相反
2014-4-14
计算机组成原理
12
21:06
2.6.2 浮点乘法、除法运算
补码采用双符号位,为了对溢出进行判断:
00 01 为正 上溢 11 10 为负 下溢
[例]:x=+011,y=+110,求[x+y]补和[x-y]补,并判断是否溢出 [x]补=00011, [y]补=00110, [-y]补=11010 [x+y]补=[x]补+[y]补=01001, 结果上溢。 [x-y]补=[x]补+[-y]补=11101, 结果正确,为-3。
2014-4-14 计算机组成原理 17
21:06
2.6.1 浮点加法、减法运算
⑸舍入处理(对阶和向左规格化时):采用就近舍入处理得
00.11100011
⑹溢出判断和处理 阶码符号位为00,无溢出,不需处理; 尾数无溢出,不需处理。 最终真值结果为:x+y = (0.11100011)×24
设有两个浮点数x和y:x=2Ex· Mx 则:x×y=2(Ex+Ey)· (Mx×My); 乘/除运算分为六步: y=2Ey· My x÷y=2(Ex-Ey)· (Mx÷My);
①.0操作数检查; ②.阶码加减操作; ③.尾数乘除操作;
④.结果规格化;
⑤舍入处理; ⑥确定符号
Mx=111101101;

计算机组成原理教案(第二章)

计算机组成原理教案(第二章)

为便于软件移植,按照 IEEE754 标准,32位浮点数和 64位浮点数的标准格式为
浮点数 符号位
小数点 (隐含的)
阶符采用隐含方式,即采用移码方式来表示正负指数。
将浮点数的指数真值e 变成阶码E 时,应将指数 e 加上 一个固定的偏移值127(01111111),即 E=e+127.
不规格的例子:
2.1.5 校验码
最简单且应用广泛的检错码是采用一位校验位的奇校验或偶校验
设x=(x0x1…xn-1)是一个n位字,则奇校验位C定义为 C=x0⊕x1⊕…⊕xn-1
式中⊕代表按位加,表明只有当x中包含有奇数个1时,才使C=1, 即C=0。
同理,偶校验位C定义为
C=x0⊕x1⊕…⊕xn-1
即x中包含偶数个1时,才使C=0。
[例4]将十进制真值(-127,-1,0,+1,+127)列表表示成二进制数及原 码、反码、补码、移码值。
[例5]设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少?
(2)定点原码小数表示时,最大正数是多少?最小负数是多少?;
(1)定点原码整数表示 最大正数值=(215-1)10=(+32767)10 0 111 111 111 111 111
0.1011
1.0101
10.0000 0.0000
对定点整数,补码表示的定义是 [x]补= {
x
2n>x≥0 (mod 2n+1)
2n+1+x=2n+1-|x| 0≥x≥-2n
3.反码表示法
我们比较定点小数反码与补码的公式 [x]反=(2-2-n)+x [x]补=2+x
[x]补=[x]反+2-n

组成原理,除法器

二.不恢复余数法(加减交替法)除法器1.1 设计1.1.1 设计原理对两个正数采用不恢复余数的算法的一般步骤如下。

1)r 1=x-y ,若r 1<0,同时恢复余数:r 1=r 1+y 。

否则,商q 0=1。

说明商大于0。

根据计算机中的定点小数表示规定,超过了数的表示范围,作溢出处理。

2)如果已经求得第i 次的部分余数r ,若r i <0,则上商为q i -1=0,r i +1=2r i +y 。

上次多减的y 在这次运算中补回来了,否则,商q i =1,ri+1=2r i -y 。

3)不断循环2),直到求得所需要的商的位数(n+1)。

例: x=0.1001, y=-0.1011, 用不恢复余数法求 x/y=? 解: 求解过程如下:所以 x ÷ y 的商 [q ]原 = 0.1101,余数[ r ]原 = 0.000000011.1.2 设计环境MASM1.1.3.程序运行界面被除数x /余数r商数q说明0 0.1 0 0 1 +[-y ]补1 1.0 1 0 1 x 减y1 1.1 1 1 0 余数r 0<0,商0←1 1.1 1 0 0 0 商0,r 和q 左移一位 +[y ]补0 0.1 0 1 1 加y0 0.0 1 1 1 余数r 1>0,商1←0 0.1 1 1 0 0.1 商1,r 和q 左移一位 +[-y ]补1 1.0 1 0 1 减y0 0.0 0 1 1 余数r 2>0,商1←0 0.0 1 1 0 0.1 1 商1,r 和q 左移一位+[-y ]补1 1.0 1 0 1 减y1 1.1 0 1 1 余数r 3<0,商0←1 1.0 1 1 0 0.1 1 0 商0,r 和q 左移一位+[y ]补0 0.1 0 1 1 加y 0 0.0 0 0 1余数r 4>0,商11 1 0 1 商1,仅q 左移一位运行程序,显示“Enter the numbers :”依次输入2个四位小数作为被除数和除数,如0.1001就输入1001(被除数必须小于除数) 显示结果“The answer is : 商 余数” 尚存除尽时余数显示有问题的bug ,待改进1.2 程序流程图程序开始,建立DA TA 段调用IN_DL 过程,读取被除数与除数分别存放在BL 、BH ,将除数的补码存至BHBBL=BL+BHB , CX=4BL<0SHANG+=0 SHANG*=2SHANGBL*=2BL BL=BL+BHSHANG+=1 SHANG*=2SHANG BL*=2BL BL=BL+BHBCX-=1调用Out_DL_oAX 过程,输出SHANG 和BL ,利用PS 确定正负程序结束,中断返回CX=0?YNYN1.3 程序分析1.3.1 输入模块IN_DLIN_DL PROC NEARPUSH AXPUSH CXXOR DL, DLMOV CX, 4INPUT: MOV AH, 1 //调用中断,读取一位输入的ASCII码INT 21HCMP AL, '0' //输入0JE Num01CMP AL, '1' //输入1JE Num01CMP AL, 32 //输入空格JE EOICMP AL, 45 //输入负号JE XPSCALL ERROR_I //其他输入,视为错误,调用ERROR_I XPS: NOT PS //符号位取反INC CX //由于输入了负号,需多输入一位数字Num01: SHL DL, 1SUB AL, '0' //将数字的ASCII码转为数字ADD DL, AL //存放一位LOOP INPUTEOI: P OP CX //输入完毕,结束POP AXRETIN_DL ENDP1.3.2 错误信息模块ERROR_I作用:输入错误时调用,中断程序,并在屏幕上输出:“Error Input!!”的信息1.3.3 输出模块Out_DL_oAXOut_DL_oAX PROC NEARPUSHFPUSH DXPUSH CXPUSH AXMOV DH, DLMOV CL, 8SUB CL, ALSHL DH, CLMOV CL, ALDIS: SHL DH, 1JC DIS1MOV DL, '0'JMP EODDIS1: MOV DL, '1'EOD: MOV AH, 2INT 21HLOOP DIS;LEA DX, LINE;MOV AH, 9;INT 21HPOP AXPOP CXPOP DXPOPFRETOut_DL_oAX ENDP1.3.4 程序主体BEG: ADD BL, BHBAND BL, 3FH XUNHUAN: MOV F, 30HAND F, BLCMP F, 30HJE FUADD SHANG, 1SHL SHANG, 1SHL BL, 1ADD BL, BHBAND BL, 3FHJMP HUIQUXUNHUAN FU: ADD SHANG, 0SHL SHANG, 1SHL BL, 1ADD BL, BHAND BL, 3FH HUIQUXUNHUAN: LOOP XUNHUANMOV F, 30HAND F, BLCMP F, 30HJE LASTFUADD SHANG, 1JMP RESULTLASTFU: ADD SHANG, 01.4.心得体会:在这次的课程设计增进了我很多对汇编语言的理解,也学会了与同学们合理合作,共同成功。

组成原理课后习题答案..


第三章

1.有一个具有20位地址和32位字长的存储器, 问: (1) 该存储器能存储多少个字节的信息? (2) 如果存储器由512K×8位SRAM芯片组成, 需要多少芯片? (3) 需要多少位地址作芯片选择? 解:(1)∵ 220= 1M, ∴ 该存储器能存储的信 息为:1M×32/8=4MB (2)(1000/512)×(32/8)= 8(片) (3) 需要1位地址作为芯片选择。

(算后的符号为正,不需要求补),得:x*y=01101000101
x * y=01101000101
8.用原码阵列除法器计算x÷y。(先乘一个比例因子变 成小数) (2)X=-01011 ,Y=11001 解:符号位 Sf = 1⊕0 = 1,去掉符号位后: [|y|]补 = 0011001, [-|y|]补=1100111, [|x|]补=01011




3.用16K*8位的DRAM芯片构成64K*32位存储器,要求: (1) 画出该存储器的组成逻辑框图。 (2) 设存储器读/写周期为0.5μS,CPU在1μS内至少要访问一 次。试问采用哪种刷新方式比较合理?两次刷新的最大时间间 隔是多少?对全部存储单元刷新一遍所需的实际刷新时间是多 少? 解:(1)组成64K×32位存储器需存储芯片数为 N=(64K/16K)×(32位/8位)=16(片) 每4片组成16K×32位的存储区,有A13-A0作为片内地址, 用A15、A14经2:4译码器产生片选信号 ,逻辑框图为:
t 2 T (m 1) 100ns 7 * 50ns 450ns 4.5 *107 ns
顺序存储器和交叉存储器的带宽分别是:
W1 q / t1 512 (8 *107 ) 64107 [位 / s]

计算机组成原理第3章 运算器和运算方法

第三章运算方法和运算器3.1补码的移位运算1、左移运算:各位依次左移,末位补0对于算术左移,若没有改变符号位,左移相当于乘以2。

2、右移运算:算术右移:符号位不变,各位(包括符号位)依次右移。

(相当于除以2)逻辑右移:最高位补0,其余各位依次右移例1:已知X=0.1011 ,Y=-0.0101 求 [0.5X]补;[0.25X]补;[-X]补;2[-X]补;[0.5Y]补;[0.25Y]补; [-Y]补;2[-Y]补[X]补=0.1011 [Y]补=1.1011[0.5X]补=0.01011 [0.5Y]补=1.11011[0.25X]补=0.001011 [0.25Y]补=1.111011[-X]补=1.0101 [-Y]补=0.01012[-X]补=0.1010 (溢出) 2[-Y]补=0.10103.2定点加减法运算及其实现3.2.1 补码加减法运算方法由于计算机中的进行定点数的加减运算大都是采用补码。

(1)公式:[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补(证明过程见教材P38)例1 X=0.001010 Y=-0.100011 求[X-Y]补,[X+Y]补解:[X]补=0.001010 [-Y]补=0.100011则 [X-Y]补=[X]补+[-Y]补=0.001010 + 0.100011=0.101101 [X]补=0.001010 [Y]补=1.011101则 [X+Y]补=[X]补+[Y]补=0.001010 + 1.011101=1.100111例2:已知X=+0.25,Y=-0.625,求X+Y; X-Y写出计算的过程.例3:已知X=25,Y=-9,求X+Y; X-Y写出计算的过程.例4:已知X=-25,Y=-9,求X+Y; X-Y写出计算的过程.解: (8位二进制表示)例2: X=0.0100000 Y=-0.1010000[X]补=0.0100000 [Y]补=1.0110000则 [X+Y]补=[X]补+[Y]补=0.0100000 + 1.0110000=1.1010000[X+Y]原=-0.0110000=(-0.375)D[X]补=0.0100000 ,[-Y]补=0.1010000则 [X-Y]补 = [X]补+[-Y]补 = 0.0100000+0.1010000=0.1110000[X+Y]原 = 0.1110000 =(0.875)D例3: X=+0011001 Y=-0001001[X]补=00011001,[Y]补=11110111则 [X+Y]补 = [X]补+[Y]补= 00011001 + 11110111= 00010000[X+Y]原 =+0010000=(+16)D[X]补= 00011001 ,[-Y]补= 00001001则 [X-Y]补 = [X]补+[-Y]补= 00011001 + 00001001= 00100010[X+Y]原 = +0100010 =(34)D例4: X=-0011001 Y=-0001001[X]补=11100111,[Y]补=11110111则 [X+Y]补 = [X]补+[Y]补= 11100111 + 11110111[X+Y]原 =-00100010=(-34)D[X]补= 11100111 ,[-Y]补= 00001001则 [X-Y]补 = [X]补+[-Y]补= 11100111 + 00001001= 11110000[X+Y]原 = -0010000 =(-16)D3.2.2 定点加减法运算中的溢出问题溢出:运算结果大于机器所能表示的最大正数或者小于机器所能表示的最小负数.溢出只是针对带符号数的运算.比如:[X]补=0.1010,[Y]补=0.1001,那么[X]补+[Y]补=1.0011(溢出)溢出是一种错误,计算机中运算时必须能够发现这个现象,并加以处理判断溢出的方法:1、采用变形补码法[X+Y] 变补=[X] 变补+[Y] 变补[X-Y] 变补=[X] 变补+[-Y] 变补例1 X=0.1011 Y=0.0011 求[X+Y]补解: [X]变补 = 00.1011, [Y]变补 = 00.0011[X+Y]变补 = 00.1011 + 00.0011 = 00.1110所以 [X+Y]补 = 0.1110例2 X=0.1011 Y=0.1001 求[X+Y]补解: [X]变补 = 00.1011 [Y]变补 = 00.1001[X+Y]变补 = 00.1011 + 00.1001 = 01.0100运算结果的两符号位是01,不相同,发生溢出,因第一符号位是0,代表正数,所以称这种溢出为“正溢出”。

计算机组成原理加减交替的阵列除法器实验

计算机组成原理加减交替的阵列除法器实验计算机组成原理是计算机科学中的一门重要课程,而阵列除法器则是其中的重要实验内容之一。

在这个实验中,我们将学习如何利用加减交替的方式来完成除法运算。

阵列除法器是一种计算机硬件,用于执行除法运算。

其核心思想是将被除数不断地与除数进行比较,直到减数小于或等于被除数。

这个过程类似于手算中的竖式除法。

在阵列除法器中,被除数和除数都被表示为二进制数,并通过寄存器进行存储。

被除数和除数都要进行位扩展,保证它们能够进行正常的比较。

除数左移一位相当于乘以2,而右移一位相当于除以2。

在加减交替的过程中,我们先根据除数的最高位,将被除数右移一个位数,并记录下该位数的值,然后使用加法器对被除数进行加减交替操作。

如果被除数大于或等于除数,则表示该位上的商为1,否则商为0。

将得到的商左移一位,然后将被除数和商相减,得到余数。

如果余数小于除数,则表示剩下的所有位数的商都为0。

如果余数大于除数,则使用余数代替被除数,并继续进行加减交替,直到余数小于或等于除数为止。

为了更好地理解这个过程,我们可以通过一个简单的例子来进行说明。

假设我们要计算的是7除以3的结果。

首先将7和3转换为二进制数,得到分别为111和011。

然后进行位扩展,得到1110和0110。

接下来,我们开始进行加减交替的操作。

首先,我们将1110右移一位,得到0111,并将1记录下来。

然后,我们使用加法器对0111和0110进行加减交替操作。

由于0111大于或等于0110,因此我们将得到的商左移一位,得到0010。

然后将0111和0110相减,得到0001。

由于0001小于0110,因此这个过程结束,7除以3的结果为2余1。

通过这个例子,我们可以看到,阵列除法器的加减交替过程虽然比较复杂,但是其本质可以归结为不断地进行位移和加减操作。

掌握了这个原理之后,我们就能够利用阵列除法器来完成更加复杂的除法计算了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档