用原码一位乘、两位乘和补码一位乘(Boob算法)、两位乘计算.。m=0.110111,y=-0.101110。
时间: 2024-05-18 17:15:44 浏览: 264
首先,我们需要将m和y转化为十进制数,并确定它们的符号位。由于m的最高位是1,因此它是一个负数,而y的最高位是0,因此它是一个正数。接下来,我们将它们转换为十进制数:
m = -0.4375
y = 0.359375
现在,我们可以使用不同的乘法算法来计算它们的乘积。
原码一位乘法:
我们可以使用标准的原码一位乘法来计算它们的乘积。首先,我们将m和y的小数部分分别乘以2的0、-1、-2、-3等次幂,得到以下结果:
m * 2^0 = -0.4375 * 1 = -0.4375
m * 2^-1 = -0.4375 * 0.5 = -0.21875
m * 2^-2 = -0.4375 * 0.25 = -0.109375
m * 2^-3 = -0.4375 * 0.125 = -0.0546875
y * 2^0 = 0.359375 * 1 = 0.359375
y * 2^-1 = 0.359375 * 0.5 = 0.1796875
y * 2^-2 = 0.359375 * 0.25 = 0.08984375
y * 2^-3 = 0.359375 * 0.125 = 0.044921875
然后,我们将这些结果相乘,并将它们舍入到最接近的整数。最后,我们将这些整数相加,得到乘积的十进制表示:
(-0) * 2^-4 + (-1) * 2^-5 + (-1) * 2^-6 + (0) * 2^-7 + (1) * 2^-8 + (2) * 2^-9 + (2) * 2^-10 + (1) * 2^-11 = -0.0390625
因此,使用原码一位乘法,m和y的乘积为-0.0390625。
两位乘法:
接下来,我们可以使用两位乘法来计算它们的乘积。首先,我们将m和y的小数部分分别乘以2的0和2的-1次幂,得到以下结果:
m * 2^0 = -0.4375 * 1 = -0.4375
m * 2^-1 = -0.4375 * 0.5 = -0.21875
y * 2^0 = 0.359375 * 1 = 0.359375
y * 2^-1 = 0.359375 * 0.5 = 0.1796875
然后,我们将这些结果转换为补码,并将它们相乘,得到以下结果:
m * y = 110100111011 * 001101110000 = 101000101101101001101000000
然后,我们将这个结果转换为原码,并将它除以2的8次幂,得到乘积的十进制表示:
(-1) * 2^-2 + (0) * 2^-3 + (1) * 2^-4 + (0) * 2^-5 + (0) * 2^-6 + (1) * 2^-7 + (1) * 2^-8 + (0) * 2^-9 + (1) * 2^-10 + (1) * 2^-11 = -0.015625
因此,使用两位乘法,m和y的乘积为-0.015625。
补码一位乘法:
最后,我们可以使用补码一位乘法(Booth算法)来计算它们的乘积。首先,我们需要将m和y转换为8位二进制补码:
m = 11100111
y = 00101110
然后,我们可以使用Booth算法来计算它们的乘积。首先,我们在m的最高位和最低位的左侧各添加一个0,以便在计算中使用。然后,我们循环8次,每次将m和y的低三位相加,并根据这个结果选择加上、减去还是不变。最后,我们取得的结果即为乘积的补码表示:
m * y = 1101111110110000
然后,我们将这个结果转换为原码,并将它除以2的8次幂,得到乘积的十进制表示:
(-1) * 2^-2 + (1) * 2^-3 + (2) * 2^-4 + (0) * 2^-5 + (1) * 2^-6 + (0) * 2^-7 + (0) * 2^-8 + (0) * 2^-9 + (0) * 2^-10 + (0) * 2^-11 = -0.046875
因此,使用补码一位乘法,m和y的乘积为-0.046875。
阅读全文