原码一位乘法与补码一位乘法
逻辑移位与算术移位
- 逻辑移位:不管逻辑左移还是逻辑右移缺位补0
- 算术移位:1.无符号型值,和逻辑移位相同 2.有符号型值,根据符号位补缺位(和符号位相同)
在下面的原码一位乘和补码一位乘都遵循以下规则:
- 1.多余进位舍去
- 2.一直执行到乘数被用完(被移除完)
- 3.原码最后需要一位,补码不需要移位
- 4.原码补码一位乘取值都不去原乘数的数
原码一位乘法
定义:
符号位单独参加运算,数据位取绝对值,每次将一位乘数对应的部分积与原部分积的累加和进行相加,并右移一位,直到乘数的所有位被用完。
举例
X=0.1101,Y=-0.1011,求XY
1.设置部分积,乘数与被乘数的绝对值
A=00.0000,B=|X|=00.1101,C=.1011
2.若判断位(C的最后一位)为0,则部分积+0000;若为1,部分积+B
接着我们对符号的确定,是通过对被乘数与乘数的符号位进行异或判断的。
XY=(0⊕1).10001111=1.10001111
补码一位乘
补码一位乘在操作和判断位上和原码一位乘有区别(原码一位乘为一位,补码一位乘为两位)
例题:X=-01101,Y=-01011,求[XY]补=?
做这道我们首先需要了解,两位判断位对应的操作
判断位 | 操作 |
00 | 右移一位 |
01 | +B补,再右移一位 |
10 | -B补,再右移一位 |
11 | 右移一位 |
B补,-B补,C分别对应 [X]补,[-X]补,[Y]补
所以我们直接可以得到,XY=0010001111