原码一位乘法

合集下载

基于8位模型机的定点原码一位乘法的实现

基于8位模型机的定点原码一位乘法的实现
p og a onto1 r r m c r .Th o h isag it r ug t lor hm nayss heop r to pr esc ntolc a he poi —o gna ul p iai a a pe a l i,t e ai n oc s o r h =soft nt r i lm t lc ton c n be m p d i i o .I hsp p r h ur eofa hivi i —org n l u t iai sr aie y tki d n a xitngm o lc ut n t i a e ,t e p pos c e ngpo nt i i a li c ton i e z d b a ng a va tgeofe si de om p e nsr — m pl l utri tuc to e sw ela r r m m i o r s ondng as m by lng gepr grm s i n sta l sp og a ng c re p i se l a ua o a .By t x rm e ,i i o b e t l e d r nd  ̄tnd t he e pe i nt t spr ba l O hep r a e su e a he w or i g rncp eo od lm a hi aiy a x nd t i h n ng. kn p i i l ft m he e c ne e sl nd e pa hert i ki
K e o ds o putro ga z ton;m od lc y w r :c m e r niai e om p e ; i —org na u t i ai ut r po nt— ii l m li c ton; i r og a pl m c opr rm

原码一位乘法

原码一位乘法

实验课程: 计算机组成原理实验时间:班级:姓名:学号批阅教师:硬布线实现原码一位乘法实验内容:在实验箱上用硬布线方法实现原码一位乘法实验设备:CP226组成原理实验箱实验设备介绍:CP226 模型机包括了一个标准CPU 所具备所有部件,这些部件包括:运算器ALU、累加器A、工作寄存器W、左移门L、直通门D、右移门R、寄存器组R0-R3、程序计数器PC、地址寄存器MAR、堆栈寄存器ST、中断向量寄存器IA、输入端口IN、输出端口寄存器OUT、程序存储器EM、指令寄存器IR、微程序计数器uPC、微程序存储器uM,以及中断控制电路、跳转控制电路。

其中运算器和中断控制电路以及跳转控制电路用CPLD 来实现,其它电路都是用离散的数字电路组成。

微程序控制部分也可以用组合逻辑控制来代替。

模型机为8 位机,数据总线、地址总线都为8位,但其工作原理与16位机相同。

模型机的指令码为8 位,根据指令类型的不同,可以有0 到 2 个操作数。

指令码的最低两位用来选择R0-R3 寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。

而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。

在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。

模型机有24 位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。

24 位控制位分别介绍如下:XRD :外部设备读信号,当给出了外设的地址后,输出此信号,从指定外设读数据。

EMWR:程序存储器EM 写信号。

EMRD:程序存储器EM 读信号。

PCOE:将程序计数器PC 的值送到地址总线ABUS 上。

EMEN:将程序存储器EM 与数据总线DBUS 接通,由EMWR和EMRD决定是将DBUS 数据写到EM 中,还是从EM 读出数据送到DBUS。

IREN:将程序存储器EM 读出的数据打入指令寄存器IR 和微指令计数器uPC。

2.1各数原码、反码、补码和移码见下表

2.1各数原码、反码、补码和移码见下表

2.227/64=00011011/01000000=0.0110110=0.11011×2-1规格化浮点表示为:[27/64]原=101,011011000[27/64]反=110,011011000[27/64]补=111,011011000同理:--27/64=--0.11011×2-1规格化浮点表示为:[27/64]原=101,111011000[27/64]反=110,100100111[27/64]补=111,1001010002.3 模为:29=10000000002.4 不对,8421码是十进制的编码2.5浮点数的正负看尾数的符号位是1还是0浮点数能表示的数值范围取决于阶码的大小。

浮点数数值的精确度取决于尾数的长度。

2.61)不一定有N1>N2 2)正确2.7 最大的正数:0111 01111111 十进制数:(1-2-7)×27最小的正数:1001 00000001 十进制数:2-7×2-7最大的负数:1001 11111111 十进制数:--2-7×2-7最小的负数:0111 10000001 十进制数:--(1-2-7)×272.81)[x]补=00.1101 [y]补=11.0010[x+y]补=[x]补+[y]补=11.1111无溢出x+y= -0.0001[x]补=00.1101 [--y]补=00.1110[x-y]补=[x]补+[--y]补=01.1011 正向溢出2)[x]补=11.0101 [y]补=00.1111[x+y]补=[x]补+[y]补=00.0100 无溢出x+y= 0.0100[x]补=11.0101 [--y]补=11.0001[x-y]补=[x]补+[--y]补=10.0110 负向溢出3) [x]补=11.0001 [y]补=11.0100[x+y]补=[x]补+[y]补=10.0101 负向溢出[x]补=11.0001 [--y]补=00.1100[x-y]补=[x]补+[--y]补=11.1101 无溢出X-y=-0.00112.91)原码一位乘法|x|=00.1111 |y|=0.1110部分积乘数y n00.0000 0.1110+00.000000.0000→00.00000 0.111+00.111100.11110→00.011110 0.11+00.111101.011010→00.1011010 0.1+00.111101.1010010→00.11010010P f=x f⊕y f=1 |p|=|x|×|y|=0.11010010所以[x×y]原=1.11010010补码一位乘法[x]补=11.0001 [y]补=0.1110 [--x]补=11.0001 部分积y n y n+100.0000 0.11100→00.00000 0.1110+00.111100.11110→00.011110 0.111→00.0011110 0.11→00.00011110 0.1+11.000111.00101110[x×y]补=11.001011102)原码一位乘法|x|=00.110 |y|=0.010部分积乘数y n00.000 0.010+00.00000.000→00.0000 0.01+00.11000.1100→00.01100 0.0+00.00000.01100 0→00.001100P f=x f⊕y f=0 |p|=|x|×|y|=0.001100所以[x×y]原=0.001100补码一位乘法[x]补=11.010 [y]补=1.110 [--x]补=00.110部分积y n y n+100.000 1.1100→00.0000 1.110+00.11000.1100→00.01100 1.11→00.001100 1.1所以[x×y]补=0.0011002.101)原码两位乘法|x|=000.1011 |y|=00.0001 2|x|=001.0110部分积乘数 c000.0000 00.00010+000.1011000.1011→000.001011 0.000→000.00001011 00.0P f=x f⊕y f=1 |p|=|x|×|y|=0.00001011所以[x×y]原=1.00001011补码两位乘法[x]补=000.1011 [y]补=11.1111 [--x]补=111.0101 部分积乘数y n+1000.0000 11.11110+111.0101111.0101→111.110101 11.111→111.11110101 11.1所以[x×y]补=111.11110101 x×y=--0.000010112)原码两位乘法|x|=000.101 |y|=0.111 2|x|=001.010 [--|x| ]补=111.011 部分积乘数 c000.000 0.1110+111.011111.011→111.11011 0.11+001.010001.00011→000.100011P f=x⊕y f=0 |p|=|x|×|y|=0.100011所以[x×y]原=0.100011补码两位乘法[x]补=111.011 [y]补=1.001 [--x]补=000.101 2[--x]补=001.010 部分积乘数y n+1000.000 1.0010+111.011111.011→111.111011 1.00+001.010001.00011→000.100011所以[x×y]补=0.1000112.111) 原码不恢复余数法|x|=00.1010 |y|=00.1101 [--|y| ]补=11.0011部分积商数00.1010+11.00111101101 0←11.1010+00.110100.0111 0.1←00.1110+11.001100.0001 0.11←00.0010+11.001111.0101 0.110←01.1010+00.110111.0111 0.1100+00.110100.0100所以[x/y]原=0.1100 余数[r]原=0.0100×2—4补码不恢复余数法[x]补=00.1010 [y]补=00.1101 [--y]补=11.0011 部分积商数00.1010+11.001111.1101 0←11.1010+00.110100.0111 0.1←00.1110+11.001100.0001 0.11←00.0010+11.001111.0101 0.110←10.1010+00.110111.0111 0.1100+00.110100.0100所以[x/y]补=0.1100 余数[r]补=0.0100×2—42)原码不恢复余数法|x|=00.101 |y|=00.110 [--|y| ]补=11.010 部分积商数00.101+11.01011.111 0←11.110+00.11000.100 0.1←01.000+11.01000.010 0.11←00.100+11.01011.110 0.110+00.11000. 100所以[x/y]原=1.110 余数[r]原=1.100×2—3补码不恢复余数法[x]补=11.011 [y]补=00.110 [--y]补=11.010 部分积商数11.011+00.11000.001 1←00.010+11.01011.100 1.0←11.000+00.11011.110 1.0011.100+00.11000.010 1.001+11.01011.100所以[x/y]补=1.001+2—3=1.010 余数[r]补=1.100×2—32.121)[x]补=21101×00.100100 [y]补=21110×11.100110小阶向大阶看齐:[x]补=21110×00.010010求和:[x+y]补=21110×(00.010010+11.100110)=21110×11.111000 [x-y]补=21110×(00.010010+00.011010)=21110×00.101100 规格化:[x+y]补=21011×11.000000 浮点表示:1011,11.000000规格化:[x-y]补=21110×00.101100 浮点表示:1110,0.101100 2)[x]补=20101×11.011110 [y]补=20100×00.010110小阶向大阶看齐:[y]补=20101×00.001011求和:[x+y]补=20101×(11.011110+00.001011)=20101×11.101001 [x-y]补=20101×(11.011110+11.110101)=20101×00.010011 规格化:[x+y]补=21010×11.010010 浮点表示:1010,11. 010010规格化:[x-y]补=21010×00.100110 浮点表示:1010,00.1001102.13见教材:P702.141)1.0001011×262)0.110111*×2-62.151)串行进位方式C1=G1+P1C0G1=A1B1,P1=A1⊕B1C2=G2+P2C1G2=A2B2,P2=A2⊕B2C3=G3+P3C2G3=A3B3,P3=A3⊕B3C4=G4+P4C3G4=A4B4,P4=A4⊕B42)并行进位方式C1=G1+P1C0C2=G2+P2G1+P2P1C0C3=G3+P3G2+P3P2G1+P3P2P1C0C4= G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C02.16参考教材P62 32位两重进位方式的ALU和32位三重进位方式的ALU 2.17“1”。

定点原码一位乘法器的设计 (3)

定点原码一位乘法器的设计 (3)

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:4401102学号:200403011034姓名:蔡丽娇指导教师:刘泽显完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1 设计原理 (1)1.2 设计思路 (1)1.3 设计环境 (2)第二章详细设计方案 (3)2.1顶层方案图的设计与实现 (3)2.1.1创建顶层图形设计文件 (3)2.1.2器件的选择与引脚锁定 (3)2.2 功能模块的设计与实现 (5)2.2.1 8位移位电路 (5)2.2.2 部分积寄存器 (7)2.2.3 乘数寄存器 (7)2.2.4 二路选择器 (8)2.2.5 计数器 (9)2.2.6 结果输出器 (11)2.3 仿真调试 (13)第3章编程下载与硬件测试 (14)3.1 编程下载 (14)3.2 硬件测试及结果分析 (14)参考文献 (15)附录(电路原理图) (16)第1章总体设计方案1.1 设计原理定点原码一位乘法器的设计主要是基于原码一位乘法的计算过成。

设计内容主要是实现输入被乘数和乘数经电路得出结果。

设计思想是:以乘数的最低位作为乘法判断位,若判断位为1,则在前次部分积(初始部分积为0)上加上被乘数,然后连同乘数一起右移一位;若判断位为0,则在前次部分积上加0,然后连同乘数一起右移一位。

重复此判断过程,直到运算n次为止(n为乘数数值部分的长度)。

1.2 设计思路原码一位乘法器主要包括ALU﹑部分积寄存器﹑乘数移位寄存器﹑被乘数寄存器和移位电路五大部分。

这五大部分就作为底层设计,其中乘数移位寄存器需要保留移出的最低位,它的最高位要接收部分积移出的最低位这两部分采用V erilog语言进行设计,顶层的乘法器采用原理图设计输入方式。

原码一位乘的数值运算中不需要考虑符号位的情况,符号位于数值位分开处理。

原码一位乘法

原码一位乘法

原码⼀位乘法1、移位操作及其意义
逻辑左移:
算术左移:
逻辑右移:
算术右移:
2、⼆进制乘法的⼿⼯计算过程
a.说明乘法可由加法实现
b.存在的问题:
*需要多输⼊的全加器(最多为n+1)
*需要长度为2n的积寄存器
*对应乘数的不同位,部分积左移次数不同
且乘法过程中总移位次数多
如何解决上述问题(改进⽅法)
*需要多输⼊的全加器(最多为n+1)
解决⽅法:基于FA的循环累加0或被乘数
*针对乘数不同位部分积左移次数不同的问题
解决⽅法:右移部分积,同时也将乘数右移,将移出的部分加⼊乘数的最左边*需要长度为2n的积寄存器
解决⽅法:从部分积和乘数寄存器取结果
3、原码⼀位乘法算法
*符号位单独参加运算,数据位取绝对值参加运算。

*运算法则:
*运算过程采⽤改进的乘法运算⽅法。

原码一位乘法器

原码一位乘法器

课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):专业:班级:学号:姓名:指导教师:完成日期:目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (2)1.3设计环境 (3)第2章详细设计方案 (5)2.1顶层方案图的设计与实现 (5)2.1.1创建顶层图形设计文件 (5)2.1.2器件的选择与引脚锁定 (5)2.1.3编译、综合、适配 (7)2.2功能模块的设计与实现 (7)2.2.1 控制器模块的设计与实现 (7)2.2.2 寄存器和与门组成的模块的设计与实现 (9)2.2.3 加法器模块的设计与实现 (11)2.2.4 寄存器模块的设计与实现 (14)2.3仿真调试 (16)第3章编程下载与硬件测试 (19)3.1编程下载 (19)3.2硬件测试及结果分析 (19)参考文献 (22)附录(电路原理图) (23)第1章总体设计方案1.1 设计原理原码一位乘,两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。

例如:X的值为1101,Y的数值为1011,求X·Y数值的过程如下:即X·Y=10001111由于在计算机内多个数据一般不能同时相加,一次加法操作只能求出两数之和,因此每求得一个相加数,就与上次部分积相加每次计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(被乘数)的两倍,因此加法器也需增到两倍。

部分积右移时,乘数寄存器同时右移一位,所以用乘数寄存器的最低位来控制相加数取被乘数或零,同时乘数寄存器接收部分积右移出来的一位,完成运算后,部分积寄存器保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。

根据人工算法可以知道,原码一位乘法的整体设计应包括乘数寄存器,被乘数寄存器,移位电路,控制器,部分积五大模块,包含一个输入、输出、控制器模块,并作为顶层设计,以上五大模块作为底层设计,采用硬件器件设计实现。

原码一位乘法

原码一位乘法

计算机组成原理实验实验名称:原码一位乘法实验方式:1.硬件连线,在实验箱上实现。

2.设计乘法指令,采用微程序实现。

实验项目:原码一位乘法实现方法:硬件连线,在实验箱上实现。

实验目的:能在实验箱上实现或是在软件环境中模拟实现原码一位乘法,并理解乘法实现的思想。

实验工具或设备:CP226计算机组成原理实验仪基本思想:原码一位乘法实现原理:由于原码表示与真值极为相似,只差一个符号,而乘积的符号又可通过两数符号的逻辑异或求得,因此,运算结果可以直接用于原码一位乘,只需加上符号位处理即可。

在实际的实验箱中8位被乘数放在R2中,运算开始时8位乘数放在R1中,运算结束时16位乘积的高位放在R0中,低位放在R1中,R0和R1串联移位。

完成这个定点原码一位乘法的运算规则可以用如下图所示的逻辑流程图表示。

在该乘法过程中,每次操作是根据乘数的一位进行操作,对于8位数的乘法,需要循环8次完成一个乘法操作,因此称为一位乘法。

下面用原码的乘法方法进行13(1101)×11(1011)的四位乘法演示。

1、在乘法开始之前,R0和R1中的初始值为0000和1011,R2中的值为1101。

2、在乘法的第一个循环中,判断R1的最低位为1,所以进入步骤1a,将R0的值0000加上R2的值1101,结果1101送人R0。

3、判断R0的末位是否为1。

如果为1,将R0和R1均右移一位,并将R1的右移结果加上1000;如果不为1,R0和R1直接右移一位(目的是将高位寄存器R0中移出的数据存放在低位寄存器R1,以实现R0 和R1的串联使用)。

其结果为(0110,1101)。

第一次循环过程结束。

第二次循环过程中,判断R1的最低位仍为1,进入步骤la,R0的值0110加1101,结果为10011。

判断R0的末位为1,将R0、R1均右移,并让R1的右移结果加上1000。

结果为(1001,1110)。

第三次循环中,因R1的最低位为0,进入步骤lb,R0加上0000为1001,判断R0的末位为1,将R0和R1均右移一位,并将R1的右移结果加上1000。

计算机组成原理第2章4-定点原码一位乘法运算

计算机组成原理第2章4-定点原码一位乘法运算

从例中可知:(1)两个n位数参加乘法运算要做n次加法和移位操作。 (2)用循环累加和移位操作实现乘法运算。
信 息 科 学 与 工 程 学 院9
第二章 运算方法和运算器
原码一位乘法逻辑结构原理图
部分积Z R0
加数器
LDR0 ∑/2Z
Yn
乘数Y R1
Yn Yn
LDR1 Y/2Y
Zs
计数器i T1 , T2, … +1
信 息 科 学 与 工 程 学 院5
第二章 运算方法和运算器
原码一位乘法(4/7)
令Zi表示第i次部分积,则上式可写成如下递推公式:
z0=0
z1=2-1(ynx+z0)
z2=2-1(yn-1x+z1) i+1
iቤተ መጻሕፍቲ ባይዱ

zi=2-1(yn-i+1x+zi-1) :
zn=x•y=2-1(y1x+zn-1)
显然,欲求x·y,则需设置一个保存部分积的累加器。乘法开始时,令部分积 的初值z0=0,然后求ynx加上z0,右移1位得第1个部分积z1。又将yn-1加上z1, 再右移1位得第2个部分积z2.依此类推,直到求得y1x加上zn-1并右移1位得最 后部分积zn,即得乘积x·y=zn。显然,两个n位数相乘,需重复进行n次“加” 及"右移”操作,才能得到最后乘积。这就是实现原码一位乘法的规则.
Ti
R
Cx
S
Q 乘法启动
被乘数X
R2
Xs Ys
信 息 科 学 与 工 程 学 1院0
第二章 运算方法和运算器
原码一位乘法(6/7)
工作原理 (I) 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。 (II) 当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X在加法器中相加,其 结果输出至R0的输入端。 (III)一旦打入控制脉冲T到来,控制信号LDR0使部分积右移一位,与此同时,R1 也在控制信号LDR1作用下右移一位,且计数器i计数一次。 (IV)当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关闭时序脉冲T, 乘法宣告结束。 若将R0和R1连接起来,乘法结束时乘积的高n位部分在R0,低n位部分在R1,R1中 原来的乘数Y由于移位而全部丢失。所得乘积为2n+1位(其中包括1位符号位).

原码的一位乘总结

原码的一位乘总结

原码的一位乘总结
原码的一位乘法是指在两个用原码表示的数之间进行乘法运算。

原码是一种表示有符号整数的方法,其中最高位表示符号位,0表示正数,1表示负数。

原码的一位乘法可以通过以下步骤进行:
1.确定乘法的两个操作数,并将它们转换为原码表示。

2.对两个操作数的每一位进行相乘,得到部分积。

3.将所有的部分积相加,得到最终的乘积。

具体的步骤如下:
假设有两个操作数A和B,都用原码表示,长度为n位。

1.确定符号位:根据A和B的符号位确定结果的符号位。

如果A和B的符号位相同,则结果为正,否则为负。

2.对于第i位(i从0到n-1):
-将A的第i位与B的第i位相乘,得到部分积Pi。

-如果A和B的符号位不同,将Pi取反(即将1变为0,0变为1)。

-将Pi左移i位(即在右边补i个0)。

3.将所有的部分积相加,得到最终的乘积。

需要注意的是,原码的一位乘法可能会出现溢出的情况。

当两个操作数相乘得到的部分积超过了原码表示的范围时,就会发生溢出。

在实际应用中,可以采用补码表示来避免这种情况的发生。

1。

21各数的原码

21各数的原码

2.227/64=00011011/01000000=0.0110110=0.11011×2-1=101,011011000规格化浮点表示为:[27/64]原[27/64]反=110,011011000[27/64]补=111,011011000同理:--27/64=--0.11011×2-1=101,111011000规格化浮点表示为:[27/64]原[27/64]反=110,100100111[27/64]补=111,1001010002.3 模为:29=10000000002.4 不对,8421码是十进制的编码2.5浮点数的正负看尾数的符号位是1还是0浮点数能表示的数值范围取决于阶码的大小。

浮点数数值的精确度取决于尾数的长度。

2.61)不一定有N1>N2 2)正确2.7 最大的正数:0111 01111111 十进制数:(1-2-7)×27最小的正数:1001 00000001 十进制数:2-7×2-7最大的负数:1001 11111111 十进制数:--2-7×2-7最小的负数:0111 10000001 十进制数:--(1-2-7)×272.81)[x]补=00.1101 [y]补=11.0010[x+y]补=[x]补+[y]补=11.1111无溢出x+y= -0.0001[x]补=00.1101 [--y]补=00.1110[x-y]补=[x]补+[--y]补=01.1011 正向溢出2)[x]补=11.0101 [y]补=00.1111[x+y]补=[x]补+[y]补=00.0100 无溢出x+y= 0.0100[x]补=11.0101 [--y]补=11.0001[x-y]补=[x]补+[--y]补=10.0110 负向溢出3) [x]补=11.0001 [y]补=11.0100[x+y]补=[x]补+[y]补=10.0101 负向溢出[x]补=11.0001 [--y]补=00.1100[x-y]补=[x]补+[--y]补=11.1101 无溢出X-y=-0.00112.91)原码一位乘法|x|=00.1111 |y|=0.1110部分积乘数y n00.0000 0.1110+00.000000.0000→00.00000 0.111+00.111100.11110→00.011110 0.11+00.111101.011010→00.1011010 0.1+00.111101.1010010→00.11010010P f=x f⊕y f=1 |p|=|x|×|y|=0.11010010所以[x×y]原=1.11010010补码一位乘法[x]补=11.0001 [y]补=0.1110 [--x]补=11.0001部分积y n y n+100.0000 0.11100→00.00000 0.1110+00.111100.11110→00.011110 0.111→00.0011110 0.11→00.00011110 0.1+11.000111.00101110[x×y]补=11.001011102)原码一位乘法|x|=00.110 |y|=0.010部分积乘数y n00.000 0.010+00.00000.000→00.0000 0.01+00.11000.1100→00.01100 0.0+00.00000.01100 0→00.001100P f=x f⊕y f=0 |p|=|x|×|y|=0.001100所以[x×y]原=0.001100补码一位乘法[x]补=11.010 [y]补=1.110 [--x]补=00.110部分积y n y n+100.000 1.1100→00.0000 1.110+00.11000.1100→00.01100 1.11→00.001100 1.1所以[x×y]补=0.0011002.101)原码两位乘法|x|=000.1011 |y|=00.0001 2|x|=001.0110部分积乘数c000.0000 00.00010+000.1011000.1011→000.001011 0.000→000.00001011 00.0P f=x f⊕y f=1 |p|=|x|×|y|=0.00001011所以[x×y]原=1.00001011补码两位乘法[x]补=000.1011 [y]补=11.1111 [--x]补=111.0101部分积乘数y n+1000.0000 11.11110+111.0101111.0101→111.110101 11.111→111.11110101 11.1所以[x×y]补=111.11110101 x×y=--0.000010112)原码两位乘法|x|=000.101 |y|=0.111 2|x|=001.010 [--|x| ]补=111.011部分积乘数c000.000 0.1110+111.011111.011→111.11011 0.11+001.010001.00011→000.100011P f=x⊕y f=0 |p|=|x|×|y|=0.100011所以[x×y]原=0.100011补码两位乘法[x]补=111.011 [y]补=1.001 [--x]补=000.101 2[--x]补=001.010部分积乘数y n+1000.000 1.0010+111.011111.011→111.111011 1.00+001.010001.00011→000.100011所以[x×y]补=0.1000112.111) 原码不恢复余数法|x|=00.1010 |y|=00.1101 [--|y| ]补=11.0011部分积商数00.1010+11.00111101101 0←11.1010+00.110100.0111 0.1←00.1110+11.001100.0001 0.11←00.0010+11.001111.0101 0.110←01.1010+00.110111.0111 0.1100+00.110100.0100所以[x/y]原=0.1100 余数[r]原=0.0100×2—4补码不恢复余数法[x]补=00.1010 [y]补=00.1101 [--y]补=11.0011部分积商数00.1010+11.001111.1101 0←11.1010+00.110100.0111 0.1←00.1110+11.001100.0001 0.11←00.0010+11.001111.0101 0.110←10.1010+00.110111.0111 0.1100+00.110100.0100所以[x/y]补=0.1100 余数[r]补=0.0100×2—42)原码不恢复余数法|x|=00.101 |y|=00.110 [--|y| ]补=11.010部分积商数00.101+11.01011.111 0←11.110+00.11000.100 0.1←01.000+11.01000.010 0.11←00.100+11.01011.110 0.110+00.11000. 100所以[x/y]原=1.110 余数[r]原=1.100×2—3补码不恢复余数法[x]补=11.011 [y]补=00.110 [--y]补=11.010部分积商数11.011+00.11000.001 1←00.010+11.01011.100 1.0←11.000+00.11011.110 1.00←11.100+00.11000.010 1.001+11.01011.100所以[x/y]补=1.001+2—3=1.010 余数[r]补=1.100×2—32.121)[x]补=21101×00.100100 [y]补=21110×11.100110=21110×00.010010小阶向大阶看齐:[x]补21110×(00.010010+11.100110)=21110×11.111000求和:[x+y]补=[x-y]补=21110×(00.010010+00.011010)=21110×00.10110021011×11.000000 浮点表示:1011,11.000000规格化:[x+y]补=21110×00.101100 浮点表示:1110,0.101100规格化:[x-y]补=2)[x]补=20101×11.011110 [y]补=20100×00.010110=20101×00.001011小阶向大阶看齐:[y]补20101×(11.011110+00.001011)=20101×11.101001求和:[x+y]补=[x-y]补=20101×(11.011110+11.110101)=20101×00.01001121010×11.010010 浮点表示:1010,11. 010010规格化:[x+y]补=21010×00.100110 浮点表示:1010,00.100110规格化:[x-y]补=2.13见教材:P702.141)1.0001011×262)0.110111*×2-62.151)串行进位方式C1=G1+P1C0G1=A1B1,P1=A1⊕B1C2=G2+P2C1G2=A2B2,P2=A2⊕B2C3=G3+P3C2G3=A3B3,P3=A3⊕B3C4=G4+P4C3G4=A4B4,P4=A4⊕B42)并行进位方式C1=G1+P1C0C2=G2+P2G1+P2P1C0C3=G3+P3G2+P3P2G1+P3P2P1C0C4= G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C02.16参考教材P62 32位两重进位方式的ALU和32位三重进位方式的ALU 2.17“1”A3B3A2 B2 A1 B1 A0 B0-。

计算机组成原理试题及答案 (1)

计算机组成原理试题及答案 (1)

计算机组成原理试题及答案一、填空(12分)1.某浮点数基值为2,阶符1位,阶码3位,数符1位,尾数7位,阶码和尾数均用补码表示,尾数采用规格化形式,用十进制数写出它所能表示的最大正数,非0最小正数,最大负数,最小负数。

2.变址寻址和基址寻址的区别是:在基址寻址中,基址寄存器提供,指令提供;而在变址寻址中,变址寄存器提供,指令提供.3.影响流水线性能的因素主要反映在和两个方面。

4.设机器数字长为16位(含1位符号位)。

若1次移位需10ns,一次加法需10ns,则补码除法需时间,补码BOOTH算法最多需要时间。

5.CPU从主存取出一条指令并执行该指令的时间叫,它通常包含若干个,而后者又包含若干个.组成多级时序系统。

二、名词解释(8分)1.微程序控制2.存储器带宽3.RISC4.中断隐指令及功能三、简答(18分)1。

完整的总线传输周期包括哪几个阶段?简要叙述每个阶段的工作。

2. 设主存容量为1MB,Cache容量为16KB,每字块有16个字,每字32位.(1)若Cache采用直接相联映像,求出主存地址字段中各段的位数。

(2)若Cache采用四路组相联映像,求出主存地址字段中各段的位数。

3。

某机有五个中断源,按中断响应的优先顺序由高到低为L0,L1,L2,L3,L4,现要求优先顺序改为L3,L2,L4,L0,L1,写出各中断源的屏蔽字。

4.统具备120种操作。

操作码位数固定,且具有直接、间接、立即、相对四种寻址方式。

(1)画出一地址指令格式并指出各字段的作用;(2)该指令直接寻址的最大范围;(3)一次间址的寻址范围; (4)相对寻址的寻址范围。

四、(6分)设阶码取3位,尾数取6位(均不包括符号位),按浮点补码运算规则计算 [25169⨯] + [24)1611(-⨯]五、画出DMA 方式接口电路的基本组成框图,并说明其工作过程(以输入设备为例)。

(8分)六、(10分)设CPU 共有16根地址线,8根数据线,并用MREQ 作访存控制信号,用W R /作读写控制信号,现有下列存储芯片: RAM :1K ×8位、2K ×4位、4K ×8位ROM :2K ×8位、4K ×8位以及74138译码器和各种门电路(自定),画出CPU 与存储器连接图。

定点数原码一位乘法

定点数原码一位乘法

定点数原码一位乘法定点数原码一位乘法是一种乘法运算的方法,它利用了二进制数的加法和移位操作来实现乘法运算。

以下是这个算法的步骤:1.将被乘数和乘数都表示为定点数,即带有符号位的纯小数。

2.将被乘数和乘数都转换为原码表示,即最高位为符号位,其余位为数值位。

3.初始化结果为0。

4.从低位到高位逐位相乘,如果该位乘积的符号与结果符号相同,则将该位乘积加到结果上,否则只做移位操作。

5.重复步骤4,直到所有位都相乘完毕。

6.对结果进行舍入或截断操作,得到最终结果。

以下是一个简单的示例:假设我们有两个定点数:被乘数为1010.101(十进制为-4.625),乘数为1011.011(十进制为-7.25)。

按照原码一位乘法的步骤,我们可以得到以下计算过程:1.被乘数=1010.101(十进制为-4.625)2.乘数=1011.011(十进制为-7.25)3.初始化结果为0。

4.从低位到高位逐位相乘:第0位:被乘数第0位为0,乘数第0位为1,符号相同,将该位乘积加到结果上,得到0+0=0。

第1位:被乘数第1位为1,乘数第1位为1,符号相同,将该位乘积加到结果上,得到0+1*2^(-2)=0.25。

第2位:被乘数第2位为0,乘数第2位为0,符号相同,将该位乘积加到结果上,得到0.25+0=0.25。

第3位:被乘数第3位为1,乘数第3位为0,符号不同,只做移位操作,得到0.25*2=0.5。

第4位:被乘数第4位为0,乘数第4位为1,符号相同,将该位乘积加到结果上,得到0.5+0=0.5。

第5位:被乘数第5位为1,乘数第5位为1,符号相同,将该位乘积加到结果上,得到0.5+(-1)*2^(-3)=-0.25。

第6位:被乘数第6位为0,乘数第6位为0,符号相同,将该位乘积加到结果上,得到-0.25+0=-0.25。

第7位:被乘数第7位为1,乘数第7位为1,符号相同,将该位乘积加到结果上,得到-0.25+(-8)*2^(-4)=-4.875。

第3章 (3.3 二进制乘法运算)

第3章 (3.3 二进制乘法运算)


8/23
8
变换布斯公式:按机器执行顺序求出每一步的部分积。 ★ 变换布斯公式:按机器执行顺序求出每一步的部分积。 =0 [P0]补=0 {[P [P1]补={[P0]补+(Yn+1-Yn)[X]补}2-1 (Yn+1=0) {[P [P2]补={[P1]补+(Yn-Yn-1)[X]补}2-1 … [Pi]补={[Pi-1]补+(Yn-i+2-Yn-i+1)[X]补}2-1 {[P … [Pn]补={[Pn-1]补+(Y2-Y1)[X]补}2-1 {[P {[P X·Y] [Pn+1]补={[Pn]补+(Y1-Y0)[X]补}=[X·Y]补 总结:在上一步的部分积上, 总结:在上一步的部分积上,加(Yi+1-Yi)[X]补(i=n,…1,0), , 再右移1位 得到新部分积。 再右移 位,得到新部分积。
6/23
6
★ 校正法 设:被乘数[X]补=X0.X1X2…Xn, 被乘数[ ] 乘数[ ] 乘数[Y]补=Y0.Y1Y2…Yn, n 则:[X·Y]补=[X]补·(-Y0+ ∑ Yi 2-i) :[ ] [ ] i=1
=

若先按原码那样直接乘; 若先按原码那样直接乘; 若乘数Y为正,则结果不需校正; 若乘数 为正,则结果不需校正; 为正 若乘数Y为负,则结果加一个校正量(- 若乘数 为负,则结果加一个校正量(- [X]补)。 为负
15/23 15



例:X=-0.111111,Y=0.111001,计算[X Y]原。 =-0.111111, 0.111111 0.111001,计算[X·Y] [X 解:B=|X|=000.111111,-B=111.000001, B=|X|=000.111111,-B=111.000001, ,-B=111.000001 +2B=001.111110

用原码一位乘

用原码一位乘

第六章20. 用原码一位乘、两位乘和补码一位乘(Booth 算法)、两位乘计算x ·y 。

(1)x= 0.110111,y= -0.101110;(2)x= -0.010111,y= -0.010101;(3)x= 19, y= 35;(4)x= 0.110 11, y= -0.111 01 。

解:(a) 原码一位乘:(1)[x]原=0.110111[y]原=1.101110x*=0.110111 y*=0.101110 符号位: 00X Y 011⊕=⊕=数值部分的计算:部分积 乘数y* ---------------------------------------------------------------------------------------------------------------------- 0.000000 101110 开始部分积为0+ 0.000000 乘数为0,加上0---------------------------------------------------------------------------------------------------------------------- 0.0000000.000000 0 10111 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X*---------------------------------------------------------------------------------------------------------------------- 0.110111 00.011011 10 1011 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X*--------------------------------------------------------------------------------------------------------------------- 1.010010 100.101001 010 101 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X*---------------------------------------------------------------------------------------------------------------------1.100000 0100.110000 0010 10+ 0.000000-------------------------------------------------------------------------------------------------------------------- 0.110000 00100.011000 00010 1 部分积右移一位,乘数右移一位+ 0.110111 乘数为1,加上X*--------------------------------------------------------------------------------------------------------------------- 1.001111 00010 右移一位0.100111 100010[x*y]原=1.100111100010(2)[x]原=1.010111[y]原=1.010101x*=0.010111 y*=0.010101 符号位: 00X Y 110⊕=⊕=数值部分的计算:部分积 乘数y*0.000000 010101 开始部分积为0+ 0.010111 乘数为1,加上X*0.0101110.001011 1 01010 部分积右移一位,乘数右移一位+ 0.000000 乘数为0,加上00.001011 10.000101 11 0101 部分积右移一位,乘数右移一位+ 0.010111 乘数为1,加上X*0.011100 110.001110 011 010 部分积右移一位,乘数右移一位+ 0.000000 乘数为0,加上00.001110 0110.000111 0011 01 部分积右移一位,乘数右移一位+ 0.010111 乘数为1,加上X*0.011110 00110.001111 00011 0 部分积右移一位,乘数右移一位+ 0.0000000.001111 000110.000111 100011故,x ·y=0.000111100011(3)[x]原=0,0001 0011[y]原=0,0010 0011x*=0001 0011 y*=0010 0011符号位: 00X Y 000⊕=⊕=数值部分的计算:部分积 乘数y*00000000 00100011 开始部分积为0+ 00010011 乘数为1,加上X* 0001001100001001 1 0010001 部分积右移一位,乘数右移一位+ 0001001100011100 100001110 01 001000 部分积右移一位,乘数右移一位 + 0000000000001110 0100000111 001 00100 部分积右移一位,乘数右移一位00000011 1001 001000000001 11001 00100000101 0011001即 0,0000 0010 1001 1001(4)x=0.11011,y=-0.11101[x]原=0.11011[y]原=1.11101x*=0.11011 y*=0.11101 符号位: 00X Y 011⊕=⊕=数值部分的计算:部分积 乘数y*0.00000 11101 开始部分积为0+ 0 .11011 乘数为1,加上X*0.110110.01101 1 1110 部分积右移一位,乘数右移一位0.00110 11 111 部分积右移一位,乘数右移一位+ 0.110111.00001 110.10000 111 11 部分积右移一位,乘数右移一位+ 0.11011 乘数为1,加上X*1.01011 1110.10101 1111 1 部分积右移一位,乘数右移一位+ 0.11011 乘数为1,加上X*1.10000 11110.11000 01111加上符号位得1.1100001111(b) 补码一位乘(Booth)当乘数y 为正数时,不管被乘数x 符号如何,都可按原码乘法的规则运算,但加和移位都必须按补码规则运算当乘数y 为负数时,把乘数的补码[y]补去掉符号位,当成一个正数与[x]补相乘,然后加上[-x]补进行校正。

计算机组成与结构_试题及答案(2套)[1]

计算机组成与结构_试题及答案(2套)[1]
8、在存储系统的Cache与主存层次结构中,常会发生数据替换问题,此时我们较常使用的替换算法有和等。
9、一条指令实际上包括两种信息即和。
10、按照总线仲裁电路的位置不同,可分为仲裁和仲裁。
三、简答题:(每题5分,共15分)
1、CPU中有哪些主要寄存器?简述这些寄存器的功能。
2、RISC机器具有什么优点,试简单论述。
(3)若用4个8K×4位的SRAM芯片和2个4K×8位的SRAM芯片形成24K×8位的连续RAM存储区域,起始地址为0000H,假设SRAM芯片有CS#(片选,低电平有效)和WE#(写使能,低电平有效)信号控制端。试画出SRAM与CPU的连接图,在图上标清楚地址译码连接,数据线、地址线、控制线连接。(6分)
A、一个字节B、二个字节C、三个字节D、四个字节
20、某一SRAM芯片,其容量为512×8位,考虑电源端和接地端,该芯片引出线的最小数目应为。
A、23 B、25 C、50 D、19
二、填空题:(每空1分,共20分)
1、设X=—0.1011,则[X]补为。
2、汉字的、、是计算机用于汉字输入、内部处理、输出三种不同用途的编码。
3、计算机存储系统分那几个层次?每一层次主要采用什么存储介质?其存储容量和存取速度的相对值如何变化?
四、综合题:(共45分)
1、求十进制数―123的原码表示,反码表示,补码表示和移码表示(用8位二进制表示,并设最高位为符号位,真值为7位)。(本题8分)
2、基址寄存器的内容为3000H,变址寄存器的内容为02B0H,指令的地址码为002BH,程序计数器(存放当前正在执行的指令的地址)的内容为4500H,且存储器内存放的内容如下:
1、寄存器间接寻址方式中,操作数处于()中。
A、通用寄存器B、主存C、程序计数器D、堆栈

原码一位乘法

原码一位乘法

原码一位乘法乘法是数学中最重要的基本运算之一,也是学习数学的重要知识,也是大学生运用数学解决问题,实现抽象思维和抽象想象的基础。

原码一位乘法,是我们经常会遇到的运算,它能够让我们快速算出乘积,也是数学运算的精髓。

原码一位乘法的原理是,通过重复进位的方式来实现一位乘法的计算,而且是一般乘法算法的关键所在。

比如说,2乘以5,它的原码乘法进位法计算过程如下:1.2乘以5,计算结果为10,然后将10除以10,取余数,即最终结果为0。

2.2乘以4,计算结果为8,然后将8除以10,取余数,即最终结果为8。

3.2乘以3,计算结果为6,然后将6除以10,取余数,即最终结果为6。

4.2乘以2,计算结果为4,然后将4除以10,取余数,即最终结果为4。

5.2乘以1,计算结果为2,然后将2除以10,取余数,即最终结果为2。

最后,可以将上述余数依次排列起来,得出最终的乘积为1082。

由于原码一位乘法的运算方法简单,而且结果容易求得,所以被广泛应用于计算机中的程序设计,尤其是在计算机科学中有着重要的地位。

尽管原码一位乘法让我们能够简单快速地计算出乘积,但是它也有一些限制,它不能处理超过一位数的乘积,也不能处理乘积过长的数字。

因此,要做更为精确的乘法计算,我们还需要用到其他算法,比如多位乘法法则。

原码一位乘法在计算机中的优势在于它可以简化计算机的运算程序,提高计算机的运算速度,减少计算机的存储空间,给用户提供更好的计算体验。

在实际应用中,原码一位乘法可以帮助我们快速算出结果,使我们在解决复杂数学问题时节省大量精力,让我们能够得出准确的结果,大大提高了工作效率。

原码一位乘法虽然有着极大的优势,但是也存在着一些缺点,例如,它不能处理超过一位数的乘法,也不能处理乘积过长的数字。

因此,我们在使用原码一位乘法时要注意其限度,最好的方式是结合不同的算法,一起运用,充分发挥它的优势,实现更加准确、更加高效的运算效果。

综上所述,原码一位乘法是数学计算中一种重要且有效的算法,它被广泛应用于计算机程序设计,可以让我们快速算出结果,提高计算机的运算效率,但是也有一些限制,要想得出更加准确、更加高效的结果,我们要将不同算法结合起来运用,把原码一位乘法发挥到最大的程度。

原码位乘法的算法

原码位乘法的算法

原码位乘法是一种基于二进制原码表示的乘法算法。

在计算机科学中,原码是二进制数的一种表示方式,最高位是符号位,0表示正,1表示负,余下的位数表示数值的绝对值。

这种乘法算法被广泛应用在数字信号处理、图像处理以及计算机图形学等领域。

以下是原码位乘法的算法步骤:
1. 将两个乘数转换为原码表示。

2. 从最低位(即最右边)开始,逐位判断乘数的每一位。

3. 如果乘数的某一位为1,则将被乘数与对应的2的幂次相乘(该幂次由当前位的位置决定),并将结果累加到总和中。

这一步实际相当于将该位的值乘以被乘数然后累加。

4. 判断完所有位之后,得到的总和即为乘积的原码表示。

5. 如果乘积的原码符号位为1,即结果为负数,需要对结果进行取反加1的运算,将其转换为补码表示。

注意:以上算法步骤描述的是基本的原码位乘法过程,实际在计算机中执行时,可能会根据具体的硬件架构进行优化改进,但从算法的基本概念和运算上仍是符合上述流程的。

例如在大部分的计算机系统中,数值在内部通常以补码形式进行存储和运算,所以实际在执行乘法运算时,会将原码转换为补码进行运算,得到的结果也是补码形式,最后再根据需要转换为原码或其他表示形式。

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

(3)部分积取被乘数x的值还是取零值是由乘数对应位上 的取值为1还是0决定的,乘数y每一位的值是0还是1都 能直接看见。而在计算机内从存放乘数的寄存器中逐 位取出每一位来判别该位值是0还是1来决定相加数的 值是不方便的。
小飞守角制作
问题解决啦!!!
(1)设初始部分积的值为0,每求得一个部分积,就同时 与上一次部分积相加,每次运算器都是完成两个数据 的加法,最终可得到结果。 (2)将每次的部分积左移一位操作变为加法之前部分积 右移一位来实现,因为前一次部分积的最低位是不参 与相加计算的,将右移操作移出位用专门的寄存器来 保存。 (3)每求一次部分积时,使存放乘数y的寄存器执行一次 右移操作,这样每次就从寄存器的最低位直接取值就 可以了。
=2-1{2-1[2-1(2-1xy4+xy3)+xy2]+xy1}
=2-1{2-1[2-1(2-1<0+xy4>+xy3)+xy2]+xy1}
小飞守角制作
根据上式,可将乘法转换为一系列加法与移位操 作。将递推公式推广到n位,得: Z0=0 (初始部分积为0)
Z1=2-1(Z0+xyn)
Z2=2-1(Z1+xyn-1)
小飞守角制作
问题回顾
(1)在最后一步一次完成了n个部分积的求和,而计算机 运算器很难实现一次完成多个数据的同时相加,通常 只能完成对两个数的求和。 (2)每次得到的部分积都需左移一位,最终部分积的位数 将变为乘数y位数的两倍,这将要求计算机加法器的位 数是寄存器位数的两倍,而计算机设计时加法器的位 数一般与寄存器的位数相同。
小飞守角制作
⑵采用乘除运算部件实现乘除运算 基本思想:在加法器的基础上增加左、右 移位及计数器等逻辑线路构成乘除运算部 件来实现乘除运算。 设置有乘除运算指令,用户只需执行 乘除指令即可进行乘除运算。 实现乘除运算的速度比上一种方式快, 但需要根据一定的乘除算法构建乘除运算 部件,所需的硬件线路较复杂。

Zn=2-1(Zn-1+xy1)=x×y
小飞守角制作
原码一位乘法的算法
① 积的符号单独按两操作数的符号模2加(异或) 得到。用被乘数和乘数的数值部分进行运算。 ② 以乘数的最低位作为乘法判别位,若判别位为 1,则在前次部分积(初始部分积为0)上加上 被乘数,然后连同乘数一起右移一位;若判别 位为0,则在前次部分积上加0(或不加),然 后连同乘数一起右移一位。 ③ 重复第②步直到运算n次为止。(n为乘数数值 部分的长度)
小飞守角制作
一位原码乘法运算
x×y=x×0.y1y2y3y4 =x×(2-1y1+2-2y2+2-3y3+2-4y4)
=2-1xy1+2-2xy2+2-3xy3+2-4xy4
=2-1{2-3xy4+2-2xy3+2-1xy2+xy1}
=2-1{2-1[2-2xy4+2-1xy3+xy2]+xy1}
小飞守角制作
原码一位乘法的硬件实现
小飞守角制作
• A寄存器:存放部分积高位部分,初始为0 • B寄存器:存放被乘数x • C寄存器:存放乘数y和部分积低位部分,初始为 乘数y • CR:计数器。用于记录乘法次数 运算初始时,CR=0,每进行一次运算CR+1,当 计数到CR=n时,将CT清0,结束运算。 • Cj:进位位 • CT:乘法控制触发器, CT=1,允许发出移位脉冲,进行乘法运算 CT=0,不允许发出移位脉冲,停止乘法运算
第三章
运算方法与运算器
本章学习内容
• 运算器的设计方法
• 定点数的加、减、乘、除运算
• 浮点数的加、减、乘、除运算
• 十进制数的运算
小飞守角制作
3.3 定点乘法运算
⑴ 利用乘除运算子程序实现乘除运算 基本思想:采用软件实现乘除运算。 通常是利用计算机中的加/减运算指令、 移位指令及控制类指令组成循环程序,通过在 运算器中的加法器、移位器等基本部件上的反 复加/减操作,得到运算结果。 这种方式所需硬件简单,但实现速度较 慢,主要应用在早期的小、微型机上。
小飞守角制作
⑶ 利用专用阵列乘除运算器实现乘除运算
基本思想:将多个加减运算部件排成乘除
运算阵列,依靠硬件资源的重复设置,同
时进行多位乘除运算的乘除运算,从而赢
得乘除运算的高速度。
小飞守角制作
采用乘除运算部件实现乘除运算
• 定点乘法运算 原码乘法运算 补码乘法运算 • 定点除法运算 原码除法运算 补码除法运算
(3)部分积取被乘数x的值还是取零值是由乘数对应位上 的取值为1还是0决定的,乘数y每一位的值是0还是1都 能直接看见。而在计算机内从存放乘数的寄存器中逐 位取出每一位来判别该位值是0还是1来决定相加数的 值是不方便的。
小飞守角制作
3.3.1
原码乘法运算
在定点机中,两个数的原码乘法运算包括: (1)乘积的符号处理 (2)两数绝对值相乘 设 [x]原=xf.x1x2…xn [y]原=yf.y1y2…yn [Z]原=[x]原×[y]原=zf.z1z2…zn 符号处理: 根据“同号相乘,乘积为正;异号相乘,乘积为 负”,得符号运算的表达式为 zf=xf⊕yf。
小飞守角制作
有问题!!!
(1)在最后一步一次完成了n个部分积的求和,而计算机 运算器很难实现一次完成多个数据的同时相加,通常 只能完成对两个数的求和。 (2)每次得到的部分积都需左移一位,最终部分积的位数 将变为乘数y位数的两倍,这将要求计算机加法器的位 数是寄存器位数的两倍,而计算机设计时加法器的位 数一般与寄存器的位数相同。
小飞守角制作
例3.9 根据原码一位乘法的算法计算例3.8。 解:[x]原=0.1101,[y]原=1.1011, 乘积 [z]原=[x×y]原 ① 符号位单独处理得 zf=0⊕1=1 ② 将被乘数和乘数的绝对值的数值部分相乘。 [|x|]原=0.1101 [|y|]原=0.1011
原码一位乘法计算演示动画 数值部分为4位,共需运算4次。 得:|x×y|=0.10001111 加上符号部分得:[x×y]原=1.10001111 即:x×y=-0.10001111
小飞守角制作
现象:
(1)每个部分积的值是由乘数y对应位的数值决定的。
当乘数对应位数值为1时部分积取值为被乘数x,
当乘数对应位数值为0时部分积取值为全0。
(2)各相加数从乘数的最低位到最高位,逐位求取, 并将求得的各相加数逐个左移一位,最后一步一 次求和。 (3)两个n位数相乘得8位乘积,共n个部分积需2n位 加法器相加。
小飞守角制作
原码一位乘法的运算流程
小飞守角制作
课后延伸
编写一个程序计算1234567890×12345678990,
将结果输出。
提示:大数相乘过程中会超过计算机中整型数
据的表示范围,因此必须利用本次学习的乘法 运算过程借助于字符串实现。
小飞守角制作
小飞守角制作
例3.8:x=0.1101,y=0.1011 求x×y=?
0.1101 × 0.1011 1101 1101 0000 1101 0.10001111
∵ y4=1 ∴ 得部分积为 x ∵ y3=1 ∴ 得部分积为 x ∵ y2=0 ∴ 得部分积为 0 ∵ y1=1 ∴ 得部分积为 x 将所有部分积相加,得到最后的乘积
相关文档
最新文档