用原码一位乘,补码一位称(Booth算法)计算下列题目: (1)x=0.110111,y=-0.101110 (2) x=-0.010111,y=-0.010101 (3)x=19,y=35
时间: 2024-06-02 07:09:45 浏览: 508
(1) x=0.110111, y=-0.101110
将x和y都转换为补码表示:
x=0.110111 -> 0.110111 -> 111001
y=-0.101110 -> 1.010010 -> 110101
Booth算法的步骤如下:
1. 初始化:将A设置为0,将Q设置为y,将M设置为x的补码表示。
A = 0
Q = 110101
M = 111001
2. 循环n次(n为x和y的位数):
1. 判断Q的末尾两位是否为01,是则A = A - M;判断Q的末尾两位是否为10,是则A = A + M。
2. 将A和Q右移一位。
3. 将Q的最高位设置为A的最低位。
4. 循环结束,得到结果Q = 10000110,转换为原码表示为-0.100110。
所以,结果为-0.100110。
(2) x=-0.010111, y=-0.010101
将x和y都转换为补码表示:
x=-0.010111 -> 1.101001 -> 110011
y=-0.010101 -> 1.101011 -> 110010
Booth算法的步骤如下:
1. 初始化:将A设置为0,将Q设置为y,将M设置为x的补码表示。
A = 0
Q = 110010
M = 110011
2. 循环n次(n为x和y的位数):
1. 判断Q的末尾两位是否为01,是则A = A - M;判断Q的末尾两位是否为10,是则A = A + M。
2. 将A和Q右移一位。
3. 将Q的最高位设置为A的最低位。
4. 循环结束,得到结果Q = 00000010,转换为原码表示为0.000010。
所以,结果为0.000010。
(3) x=19, y=35
将x和y都转换为二进制表示:
x = 19 -> 10011
y = 35 -> 100011
Booth算法的步骤如下:
1. 初始化:将A设置为0,将Q设置为y,将M设置为x的补码表示。
A = 0
Q = 100011
M = 10011
2. 循环n次(n为x和y的位数):
1. 判断Q的末尾两位是否为01,是则A = A - M;判断Q的末尾两位是否为10,是则A = A + M。
2. 将A和Q右移一位。
3. 将Q的最高位设置为A的最低位。
4. 循环结束,得到结果Q = 11100111,转换为十进制表示为231。
所以,结果为231。
阅读全文