当前位置:网站首页>二进制乘法运算
二进制乘法运算
2022-08-02 14:03:00 【君知燕云归】
一、定点数一位乘法
1.定点原码一位乘法
* 乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积
*人工计算特点
◆ 乘积位数是乘数的二倍
◆ 相加数逐次向左偏移一位
◆ 前一部分积的最低位不再参与运算
机器计算需要解决哪些问题?
◆ 如何解决多个数据同时相加?
◆ 如何保存2N位乘积结果?
解决方法(1) ◆ 设置寄存器
* A寄存器:部分积
* B寄存器:被乘数
* C寄存器:乘数
解决方法(2) ◆ 每求得一个相加数,就与上次部分积相加
◆ 利用N位加法器实现两个N位数相乘。
* 在求本次部分积时,前一次部分积的最低位不再参与运算,因此可将其右移一位。
* 乘数最低位用完也没有用处了。乘数寄存器同时右移一位。
◆ A寄存器中保存乘积的高位部分,C寄存器中保存乘积的低位部分。



得出结果:
原码乘法是先取操作数绝对值相乘,符号位单独处理。
2.定点补码一位乘

定点补码一位乘法的规则
设被乘数 [X]补 = X0. X1X2… Xn
◆ 乘数 [Y]补 = Y0. Y1Y2… Yn
◆ 则 [X . Y]补 = [X]补(0. Y1Y2… Yn) - [X]补. Y0
例1: [X . Y]补 = [X]补(0. Y1Y2… Yn) - [X]补. Y0(其中Y0=0)
答案为:[X . Y]补 = 1.01110001 X . Y = -0.10001111
例2: [X . Y]补 = [X]补(0. Y1Y2… Yn) - [X]补. Y0(其中Y0=1)
答案为:[X . Y]补 = 0.10001111
例3:
根据补码一位乘公式 [X . Y]补 = [X]补(0. Y1Y2… Yn) - [X]补. Y0可知,当Y0=0时,需要进行n次加法运算;Y0=1时,需要进行n+1次加法运算。故最多需要n+1次。(n以乘数y的位数为准)
3.布斯公式

需要在乘数最后一位增加一位“0”,Y0也参加运算。
二、定点数二位乘法
1.原码两位乘法
左移一位相当于乘2,右移一位相当于除2。(此处需要结合例题反复理解)

例:
如果最后一次操作欠下+4X,则最后一次右移两位后还需补充+X操作,+X后不再移位。
2.补码两位乘法
根据前述的布斯算法,将两步合并成一步,可推导出补码两位乘的公式。
需要在乘数最后一位增加一位“0”,Y0也参加运算。
符号位参与运算,部分积与被乘数采用三符号位;乘数Y数值的位数为偶数设两个符号位;为奇数设一个符号位。
根据Yn-1 , Yn ,Yn+1判断
Yn-1 Yn Yn+1 组合
0 0 0 0 部分积+0,右移两位
0 0 1 1 部分积+[X]补,右移两位
0 1 0 1 部分积+[X]补,右移两位
0 1 1 2 部分积+2[X]补,右移两位
1 0 0 -2 部分积+2[-X]补,右移两位
1 0 1 -1 部分积+[-X]补,右移两位
1 1 0 -1 部分积+[-X]补,右移两位
1 1 1 0 部分积+0,右移两位
详情参考文章:补码两位乘法
例(同上布斯公式例3.34)用补码两位乘法处理
三、阵列乘法器

了解详情可参考文章:阵列乘法器
边栏推荐
猜你喜欢
随机推荐
Basic operations of 8583 sequential stack
Building and getting started with the Flask framework
Flask request application context source code analysis
run yolov5
Flask-SQLAlchemy
uniapp小程序禁止遮罩弹窗下的页面滚动的完美解决办法
MobileNet ShuffleNet & yolov5 replace backbone
C语言待解决
VS Code无法安装插件之Unable to install because, the extension '' compatible with current version
编程规范——LiteOS
Paddle window10 environment using conda installation
Verilog Learning Series
The IDEA of packaged jar package
Unit 15 Paging, Filtering
Unit 13 Mixing in View Base Classes
C语言日记 7 输入/输出格式控制
利用c语言实现对键盘输入的一串字符的各类字符的计数
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
Implementation of redis distributed lock and watchdog
C语言初级—用一角,两角,五角和一元组成3.5元有多少种组合方法



![[ROS] The software package of the industrial computer does not compile](/img/a8/a1347568170821e8f186091b93e52a.png)




