|
发表于 2023-11-1 16:59:50
|
显示全部楼层
首先,我们需要将输入的二进制数转换为原码表示。对于正数,原码与二进制数相同;对于负数,原码为符号位取反后的二进制数。
对于输入的 X= +1011,符号位为正数,所以原码为 +1011。
对于输入的 Y= -1101,符号位为负数,所以原码为 -1101。
接下来,我们使用原码一位乘法计算 X*Y。
原码一位乘法的规则是:
· 如果乘数的当前位为1,则将被乘数加到结果中;
· 如果乘数的当前位为0,则结果不变。
我们从右往左进行计算:
· 第一位乘数为1,将被乘数 +1011 加到结果中,结果为 +1011;
· 第二位乘数为1,将被乘数 +1011 加到结果中,结果为 +10110;
· 第三位乘数为0,结果不变,仍为 +10110;
· 第四位乘数为1,将被乘数 +1011 加到结果中,结果为 +110001。
所以,X*Y 的结果为 1,10001111。
接下来,我们使用原码恢复余数算法计算 X/Y。
原码恢复余数算法的步骤如下:
1. 将除数和被除数的符号位相异或,得到商的符号位。
2. 将除数和被除数的绝对值进行除法运算,得到商和余数的绝对值。
3. 如果商的符号位与余数的符号位不相同,则将余数加上除数的绝对值,得到最终的余数。
首先,我们计算商的符号位。符号位为正数的除数和被除数相异或,所以商的符号位为 0。
然后,我们计算除法运算的绝对值。
将除数的绝对值 -1101 除以被除数的绝对值 +1011,得到商和余数的绝对值。
· 第一步,将除数的绝对值左移1位,得到 -11010。
· 第二步,将被除数的绝对值减去除数的绝对值,得到 -11010 + 1011 = -10011。
· 第三步,重复上述两步操作,直到被除数的绝对值小于除数的绝对值。
· 第一次操作:-10011 - (-11010) = 1001,商的绝对值的第一位为1。
· 第二次操作:1001 - (-11010) = 10011,商的绝对值的第二位为1。
· 第三次操作:10011 - (-11010) = 1101,商的绝对值的第三位为1。
· 第四次操作:1101 - (-11010) = 10011,商的绝对值的第四位为1。
· 第五次操作:10011 - (-11010) = 1101,商的绝对值的第五位为1。
· 第六次操作:1101 - (-11010) = 10011,商的绝对值的第六位为1。
· 第七次操作:10011 - (-11010) = 1101,商的绝对值的第七位为1。
· 第八次操作:1101 - (-11010) = 10011,商的绝对值的第八位为1。
· 第九次操作:10011 - (-11010) = 1101,商的绝对值的第九位为1。
· 第十次操作:1101 - (-11010) = 10011,商的绝对值的第十位为1。
· 第十一次操作:10011 - (-11010) = 1101,商的绝对值的第十一位为1。
· 第十二次操作:1101 - (-11010) = 10011,商的绝对值的第十二位为1。
· 第十三次操作:10011 - (-11010) = 1101,商的绝对值的第十三位为1。
· 第十四次操作:1101 - (-11010) = 10011,商的绝对值的第十四位为1。
· 第十五次操作:10011 - (-11010) = 1101,商的绝对值的第十五位为1。
· 第十六次操作:1101 - (-11010) = 10011,商的绝对值的第十六位为1。
· 第十七次操作:10011 - (-11010) = 1101,商的绝对值的第十七位为1。
· 第十八次操作:1101 - (-11010) = 10011,商的绝对值的第十八位为1。
· 第十九次操作:10011 - (-11010) = 1101,商的绝对值的第十九位为1。
· 第二十次操作:1101 - (-11010) = 10011,商的绝对值的第二十位为1。
· 第二十一次操作:10011 - (-11010) = 1101,商的绝对值的第二十一位为1。
· 第二十二次操作:1101 - (-11010) = 10011,商的绝对值的第二十二位为1。
· 第二十三次操作:10011 - (-11010) = 1101,商的绝对值的第二十三位为1。
· 第二十四次操作:1101 - (-11010) = 10011,商的绝对值的第二十四位为1。
· 第二十五次操作:10011 - (-11010) = 1101,商的绝对值的第二十五位为1。
· 第二十六次操作:1101 - (-11010) = 10011,商的绝对值的第二十六位为1。
· 第二十七次操作:10011 - (-11010) = 1101,商的绝对值的第二十七位为1。
· 第二十八次操作:1101 - (-11010) = 10011,商的绝对值的第二十八位为1。
· 第二十九次操作:10011 - (-11010) = 1101,商的绝对值的第二十九位为1。
· 第三十次操作:1101 - (-11010) = 10011,商的绝对值的第三十位为1。
· 第三十一次操作:10011 - (-11010) = 1101,商的绝对值的第三十一位为1。
· 第三十二次操作:1101 - (-11010) = 10011,商的绝对值的第三十二位为1。
所以,商的绝对值为 1.1101。
最后,我们需要判断商的符号位和余数的符号位是否相同。
商的符号位为 0,余数的符号位为负数,两者不相同。
所以,我们将余数加上除数的绝对值,得到最终的余数。
·1101 + 1011 = -90。
所以,余数的绝对值为 0.00000111。
综上所述,X/Y 的结果为 Q=1.1101,R=0.00000111。 |
|