原码一位乘法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
…
Zn=2-1(Zn-1+xy1)=x×y
小飞守角制作
原码一位乘法的算法
① 积的符号单独按两操作数的符号模2加(异或) 得到。用被乘数和乘数的数值部分进行运算。 ② 以乘数的最低位作为乘法判别位,若判别位为 1,则在前次部分积(初始部分积为0)上加上 被乘数,然后连同乘数一起右移一位;若判别 位为0,则在前次部分积上加0(或不加),然 后连同乘数一起右移一位。 ③ 重复第②步直到运算n次为止。(n为乘数数值 部分的长度)
第三章
运算方法与运算器
本章学习内容
• 运算器的设计方法
• 定点数的加、减、乘、除运算
• 浮点数的加、减、乘、除运算
• 十进制数的运算
小飞守角制作
3.3 定点乘法运算
⑴ 利用乘除运算子程序实现乘除运算 基本思想:采用软件实现乘除运算。 通常是利用计算机中的加/减运算指令、 移位指令及控制类指令组成循环程序,通过在 运算器中的加法器、移位器等基本部件上的反 复加/减操作,得到运算结果。 这种方式所需硬件简单,但实现速度较 慢,主要应用在早期的小、微型机上。
小飞守角制作
原码一位乘法的硬件实现
小飞守角制作
• A寄存器:存放部分积高位部分,初始为0 • B寄存器:存放被乘数x • C寄存器:存放乘数y和部分积低位部分,初始为 乘数y • CR:计数器。用于记录乘法次数 运算初始时,CR=0,每进行一次运算CR+1,当 计数到CR=n时,将CT清0,结束运算。 • Cj:进位位 • CT:乘法控制触发器, CT=1,允许发出移位脉冲,进行乘法运算 CT=0,不允许发出移位脉冲,停止乘法运算
小飞守角制作
有问题!!!
(1)在最后一步一次完成了n个部分积的求和,而计算机 运算器很难实现一次完成多个数据的同时相加,通常 只能完成对两个数的求和。 (2)每次得到的部分积都需左移一位,最终部分积的位数 将变为乘数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)
小飞守角制作
原码一位乘法的运算流程
小飞守角制作
课后延伸
编写一个程序计算1234567890×12345678990,
将结果输出。
提示:大数相乘过程中会超过计算机中整型数
据的表示范围,因此必须利用本次学习的乘法 运算过程借助于字符串实现。
小飞守角制作
小飞守角制作
⑵采用乘除运算部件实现乘除运算 基本思想:在加法器的基础上增加左、右 移位及计数器等逻辑线路构成乘除运算部 件来实现乘除运算。 设置有乘除运算指令,用户只需执行 乘除指令即可进行乘除运算。 实现乘除运算的速度比上一种方式快, 但需要根据一定的乘除算法构建乘除运算 部件,所需的硬件线路较复杂。
小飞守角制作
现象:
(1)每个部分积的值是由乘数y对应位的数值决定的。
当乘数对应位数值为1时部分积取值为被乘数x,
当乘数对应位数值为0时部分积取值为全0。
(2)各相加数从乘数的最低位到最高位,逐位求取, 并将求得的各相加数逐个左移一位,最后一步一 次求和。 (3)两个n位数相乘得8位乘积,共n个部分积需2n位 加法器相加。
小飞守角制作
⑶ 利用专用阵列乘除运算器实现乘除运算
基本思想:将多个加减运算部件排成乘除
运算阵列,依靠硬件资源的重复设置,同
时进行多位乘除运算的乘除运算,从而赢
得乘除运算的高速度。
小飞守角制作
采用乘除运算部件实现乘除运算
• 定点乘法运算 原码乘法运算 补码乘法运算 • 定点除法运算 原码除法运算 补码除法运算
小飞守Βιβλιοθήκη Baidu制作
例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 将所有部分积相加,得到最后的乘积
小飞守角制作
问题回顾
(1)在最后一步一次完成了n个部分积的求和,而计算机 运算器很难实现一次完成多个数据的同时相加,通常 只能完成对两个数的求和。 (2)每次得到的部分积都需左移一位,最终部分积的位数 将变为乘数y位数的两倍,这将要求计算机加法器的位 数是寄存器位数的两倍,而计算机设计时加法器的位 数一般与寄存器的位数相同。
(3)部分积取被乘数x的值还是取零值是由乘数对应位上 的取值为1还是0决定的,乘数y每一位的值是0还是1都 能直接看见。而在计算机内从存放乘数的寄存器中逐 位取出每一位来判别该位值是0还是1来决定相加数的 值是不方便的。
小飞守角制作
问题解决啦!!!
(1)设初始部分积的值为0,每求得一个部分积,就同时 与上一次部分积相加,每次运算器都是完成两个数据 的加法,最终可得到结果。 (2)将每次的部分积左移一位操作变为加法之前部分积 右移一位来实现,因为前一次部分积的最低位是不参 与相加计算的,将右移操作移出位用专门的寄存器来 保存。 (3)每求一次部分积时,使存放乘数y的寄存器执行一次 右移操作,这样每次就从寄存器的最低位直接取值就 可以了。
小飞守角制作
一位原码乘法运算
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}
小飞守角制作
例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
(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。
Zn=2-1(Zn-1+xy1)=x×y
小飞守角制作
原码一位乘法的算法
① 积的符号单独按两操作数的符号模2加(异或) 得到。用被乘数和乘数的数值部分进行运算。 ② 以乘数的最低位作为乘法判别位,若判别位为 1,则在前次部分积(初始部分积为0)上加上 被乘数,然后连同乘数一起右移一位;若判别 位为0,则在前次部分积上加0(或不加),然 后连同乘数一起右移一位。 ③ 重复第②步直到运算n次为止。(n为乘数数值 部分的长度)
第三章
运算方法与运算器
本章学习内容
• 运算器的设计方法
• 定点数的加、减、乘、除运算
• 浮点数的加、减、乘、除运算
• 十进制数的运算
小飞守角制作
3.3 定点乘法运算
⑴ 利用乘除运算子程序实现乘除运算 基本思想:采用软件实现乘除运算。 通常是利用计算机中的加/减运算指令、 移位指令及控制类指令组成循环程序,通过在 运算器中的加法器、移位器等基本部件上的反 复加/减操作,得到运算结果。 这种方式所需硬件简单,但实现速度较 慢,主要应用在早期的小、微型机上。
小飞守角制作
原码一位乘法的硬件实现
小飞守角制作
• A寄存器:存放部分积高位部分,初始为0 • B寄存器:存放被乘数x • C寄存器:存放乘数y和部分积低位部分,初始为 乘数y • CR:计数器。用于记录乘法次数 运算初始时,CR=0,每进行一次运算CR+1,当 计数到CR=n时,将CT清0,结束运算。 • Cj:进位位 • CT:乘法控制触发器, CT=1,允许发出移位脉冲,进行乘法运算 CT=0,不允许发出移位脉冲,停止乘法运算
小飞守角制作
有问题!!!
(1)在最后一步一次完成了n个部分积的求和,而计算机 运算器很难实现一次完成多个数据的同时相加,通常 只能完成对两个数的求和。 (2)每次得到的部分积都需左移一位,最终部分积的位数 将变为乘数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)
小飞守角制作
原码一位乘法的运算流程
小飞守角制作
课后延伸
编写一个程序计算1234567890×12345678990,
将结果输出。
提示:大数相乘过程中会超过计算机中整型数
据的表示范围,因此必须利用本次学习的乘法 运算过程借助于字符串实现。
小飞守角制作
小飞守角制作
⑵采用乘除运算部件实现乘除运算 基本思想:在加法器的基础上增加左、右 移位及计数器等逻辑线路构成乘除运算部 件来实现乘除运算。 设置有乘除运算指令,用户只需执行 乘除指令即可进行乘除运算。 实现乘除运算的速度比上一种方式快, 但需要根据一定的乘除算法构建乘除运算 部件,所需的硬件线路较复杂。
小飞守角制作
现象:
(1)每个部分积的值是由乘数y对应位的数值决定的。
当乘数对应位数值为1时部分积取值为被乘数x,
当乘数对应位数值为0时部分积取值为全0。
(2)各相加数从乘数的最低位到最高位,逐位求取, 并将求得的各相加数逐个左移一位,最后一步一 次求和。 (3)两个n位数相乘得8位乘积,共n个部分积需2n位 加法器相加。
小飞守角制作
⑶ 利用专用阵列乘除运算器实现乘除运算
基本思想:将多个加减运算部件排成乘除
运算阵列,依靠硬件资源的重复设置,同
时进行多位乘除运算的乘除运算,从而赢
得乘除运算的高速度。
小飞守角制作
采用乘除运算部件实现乘除运算
• 定点乘法运算 原码乘法运算 补码乘法运算 • 定点除法运算 原码除法运算 补码除法运算
小飞守Βιβλιοθήκη Baidu制作
例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 将所有部分积相加,得到最后的乘积
小飞守角制作
问题回顾
(1)在最后一步一次完成了n个部分积的求和,而计算机 运算器很难实现一次完成多个数据的同时相加,通常 只能完成对两个数的求和。 (2)每次得到的部分积都需左移一位,最终部分积的位数 将变为乘数y位数的两倍,这将要求计算机加法器的位 数是寄存器位数的两倍,而计算机设计时加法器的位 数一般与寄存器的位数相同。
(3)部分积取被乘数x的值还是取零值是由乘数对应位上 的取值为1还是0决定的,乘数y每一位的值是0还是1都 能直接看见。而在计算机内从存放乘数的寄存器中逐 位取出每一位来判别该位值是0还是1来决定相加数的 值是不方便的。
小飞守角制作
问题解决啦!!!
(1)设初始部分积的值为0,每求得一个部分积,就同时 与上一次部分积相加,每次运算器都是完成两个数据 的加法,最终可得到结果。 (2)将每次的部分积左移一位操作变为加法之前部分积 右移一位来实现,因为前一次部分积的最低位是不参 与相加计算的,将右移操作移出位用专门的寄存器来 保存。 (3)每求一次部分积时,使存放乘数y的寄存器执行一次 右移操作,这样每次就从寄存器的最低位直接取值就 可以了。
小飞守角制作
一位原码乘法运算
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}
小飞守角制作
例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
(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。