.. . .
..
1 1 0 1 1
1 1 0 1 1
1 1 0 1 1
1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 [x?y]符号=0?1=1
所以 [x?y]原=1 1101000101
用直接补码阵列乘法器:[x]补=011011,[y]补=100001 (0) 1 1 0 1 1 ? (1) 0 0 0 0 1 (0) 1 1 0 1 1 (0) 0 0 0 0 0
(0) 0 0 0 0 0
(0) 0 0 0 0 0 (0) 0 0 0 0 0
0 (1) (1) (0) (1) (1) 0 (1) (1) 0 (1) (1) 1 1 0 1 1
将乘积中的符号位用负权表示,其他的负权位化为正权,得:[x?y]补=1 0010111011
(2) x=-11111,y=-11011 用原码阵列乘法器
. 学习参考 .
.. . .
..
1 1 1 1 1 ? 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 [x?y]符号=1?1=0
所以 [x?y]原=0 1101000101
用直接补码阵列乘法器:[x]补=100001,[y]补=100101 (1) 0 0 0 0 1 ? (1) 0 0 1 0 1 (1) 0 0 0 0 1 (0) 0 0 0 0 0
(1) 0 0 0 0 1
(0) 0 0 0 0 0 (0) 0 0 0 0 0
1 (0) (0) (0) (0) (1) 1 0 0 (1) (1) 0 0 0 1 0 1
将乘积中的符号位用负权表示,其他的负权位化为正权,得:[x?y]补=0 1101000101
. 学习参考 .
.. . .
..
8、
(1) x=11000,y=-11111
用原码阵列除法器计算,符号位单独处理,商的符号位=0?1=1
设a=(|x|?2-5),b=(|y|?2-5),则a,b均为正的纯小数,且 x÷y的数值=(a÷b);余数等于(a÷b)的余数乘以25
下面用不恢复余数法的原码阵列除法器计算a÷b
[a]补=[|x|?2-5]补=0.11000,[b]补=[|y|?2-5]补=0.11111,[-b]补=1.00001 过程如下:
0. 1 1 0 0 0 +[-b]补 1. 0 0 0 0 1 1. 1 1 0 0 1 ——余数为负,商为0 1. 1 0 0 1 0 ——余数和商左移一位(0) +[b]补 0. 1 1 1 1 1
0. 1 0 0 0 1 ——余数为正,商为1 1. 0 0 0 1 0 ——余数和商左移一位(01) +[-b]补 1. 0 0 0 0 1
0. 0 0 0 1 1 ——商为1 0. 0 0 1 1 0 ——(011) +[-b]补 1. 0 0 0 0 1
1. 0 0 1 1 1 ——商为0 0. 0 1 1 1 0 ——(0110)
. 学习参考 .
.. . .
..
+[b]补 0. 1 1 1 1 1 1. 0 1 1 0 1 ——商为0 0. 1 1 0 1 0 ——(01100) +[b]补 0. 1 1 1 1 1
1. 1 1 0 0 1 ——商为0——(011000) 即:a÷b的商为0.11000;
余数为1.11001?2-5,因为1.11001为负数,加b处理为正数,
1.11001+b=1.11001+0.11111=0.11000,所以a÷b的余数为0.11000?2-5 所以,(x÷y)的商=-0.11000,原码为:1.11000;余数为0.11000
(2) x=-01011,y=11001 商的符号位=1?0=1
设a=|x|?2-5,b=|y|?2-5,则a,b均为正的纯小数,且 x÷y的数值=a÷b;余数等于(a÷b)的余数乘以25
下面用不恢复余数法的原码阵列除法器计算a÷b
[a]补=[|x|?2-5]补=0.01011,[b]补=[|y|?2-5]补=0.11001,[-b]补=1.00111 过程如下:
0. 0 1 0 1 1 +[-b]补 1. 0 0 1 1 1
1. 1 0 0 1 0 ——余数为负,商为0 1. 0 0 1 0 0 ——余数和商左移一位(0) +[b]补 0. 1 1 0 0 1
. 学习参考 .