已知二进制数x=+0.0111, y=+0.1001,试求解以下题目:①用补码的加减法计算x+y和x-y (并判断溢出)。②用原码一位乘法计算x.y,写出详细步骤的富及说明(竖式) ③用补码乘法Booth算法计算x:y,2写出详细步骤及说明(竖式)。
时间: 2023-06-16 20:04:27 浏览: 629
① 首先将x和y转换为补码形式:
x的原码为0.0111,因为是正数,所以补码和原码相同,即0.0111。
y的原码为0.1001,因为是负数,所以需要先求出它的补码。反码为0.0110,补码为0.0111。因此,y的补码为1.1001。
然后进行加减法计算:
x+y = 0.0111 + 1.1001 = 1.1110。由于最高位为1,表示为负数,因此溢出。
x-y = 0.0111 - 1.1001 = -1.0010。由于最高位为1,表示为负数,因此溢出。
② 用原码一位乘法计算x.y
首先将x和y转换为原码形式:
x的原码为0.0111。
y的原码为0.1001,因为是负数,所以需要先求出它的补码。反码为0.0110,补码为0.0111。因此,y的原码为1.1001。
然后进行乘法计算:
0.0111
×1.1001
--------
000000 (第一次计算,结果为0)
11011 (第二次计算,结果为1,进位为0)
+1101100 (第三次计算,结果为6,进位为1)
--------
1101110
因此,x.y的原码为1.101110,即-0.1110。
③ 用补码乘法Booth算法计算x:y
首先将x和y转换为补码形式:
x的原码为0.0111,因为是正数,所以补码和原码相同,即0.0111。
y的原码为0.1001,因为是负数,所以需要先求出它的补码。反码为0.0110,补码为0.0111。因此,y的补码为1.1001。
然后进行Booth算法乘法计算:
0.0111 (x)
×1.1001 (y的补码,因此为负数)
--------
0000000 (初始值,7个0)
+0011100 (第一步,y的最后两位为01,所以加上x)
+0111000 (第二步,y的最后两位为01,所以加上x)
+1110000 (第三步,y的最后两位为00,所以不操作)
--------
1101110 (结果的补码)
因此,x:y的补码为1.101110,即-0.1110。
阅读全文