0.110 000 +0.000 000 0.110 000 0.011 000 +0.110 111 1.001 111 0.100 111 001 010 乘数为0,加上0 000 101 右移一位 乘数为1,加上x* 100 010 右移一位 即x*×y*=0.100 111 100 010,z0=x0? y0=0 ?1=1, [x×y]原=1.100 111 100 010,x·y= -0. 100 111 100 010 原码两位乘:[-x*]补=1.001 001,2x*=1.101 110
部分积 000 . 000 000 +001 . 101 110 乘数y* 00 101 110 Cj 说明 0 部分积初值为0,Cj=0 根据yn-1ynCj=100,加2x*,保持Cj=0 001 . 101 110 000 . 011 011 +111 . 001 001 10 001 011 10 001 011 0 0 右移2位 根据yn-1ynCj=110,加[-x*]补,置Cj=1 111 . 100 100 111 . 111 001 +111 . 001 001 00 100 010 右移2位 1 根据yn-1ynCj=101,加[-x*]补,置Cj=1 111 . 000 010 111 . 110 000 +000 . 110 111 10 001 000 1 右移2位 根据yn-1ynCj=001,加x*,保持Cj=0 000 . 100 111 10 001 0 即x*×y*=0.100 111 100 010,z0=x0? y0=0 ?1=1, [x×y]原=1.100 111 100 010,x·y= -0. 100 111 100 010 补码一位乘:[x]补=0.110111,[-x]补=1.001001,[y]补=1.010010
部分积 00 . 000 000 00 . 000 000 +11 . 001 001 乘数 1 010 010 0 101 001 11 . 001 001 11 . 100 100 +00 . 110 111 00 . 011 011 00 . 001 101 00 . 000 110 +11 . 001 001 1 010 100 1 101 010 1 110 101 0 0 1 右移1位 Ynyn+1=01,部分积加[x]补 右移1位 Ynyn+1=00,部分积右移1位 Ynyn+1=10,部分积加[-x]补 Yn+1 0 0 说明 Ynyn+1=00,部分积右移1位 Ynyn+1=10,部分积加[-x]补 11 . 001 111 11 . 100 111 +00 . 110 111 00 . 011 110 00 . 001 111 +11 . 001 001 11 . 011 000 1 111 010 0 111 101 0 10 111 1 右移1位 Ynyn+1=01,部分积加[x]补 0 右移1位 Ynyn+1=10,部分积加[-x]补 即 [x×y]补=1.011 000 011 110,x·y= -0.100 111 100 010 补码两位乘:
2[x]补=001.101110,2[-x]补=1.001001
部分积
结果同补码一位乘, x·y= -0. 100 111 100 010 00
乘数 Yn+1 说明 21. 用原码加减交替法和补码加减交替法计算x÷y。 (1)x=0.100111,y=0.101011; (2)x=-0.10101, y=0.11011; (3)x=0.10100, y= -0.10001; (4)x=13/32, y= -27/32。
解:
(1)x*=[x]原=[x]补=x= 0.100 111 y*=[y]原=[y]补=y= 0.101 011 [-y*]补=[-y]补=1.010 101 q0=x0?y0=0 ?0=0 x?y=x*?y*=[x?y]原=0.111 010 r*=0.000 010×2-6=0.000 000 000 010 计算过程如下: 原码加减交替除法:
被除数(余数) 商
0 . 1 0 0 1 1 1 0 . 0 0 0 0 0 0 + 1 . 0 1 0 1 0 1 试减,+[-y*]补 1 . 1 1 1 1 0 0
1? 1 . 1 1 1 0 0 0 0 . + 0 . 1 0 1 0 1 1 r<0,+y* 0 . 1 0 0 0 1 1
1? 1 . 0 0 0 1 1 0 0.1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 0 . 0 1 1 0 1 1
1? 0 . 1 1 0 1 1 0 0.1 1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 0 . 0 0 1 0 1 1
被除数(余数) 商
1? 0 . 0 1 0 1 1 0 0 . 1 1 1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 1 . 1 0 1 0 1 1
1? 1 . 0 1 0 1 1 0 0.1 1 1 0 + 0 . 1 0 1 0 1 1 r<0,+y* 0 . 0 0 0 0 0 1
1? 0 . 0 0 0 0 1 0 0.1 1 1 0 1 + 1 . 0 1 0 1 0 1 r>0, +[-y*]补 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 0
+ 0 . 1 0 1 0 1 1 r<0,+y*(恢复余数) 0 . 0 0 0 0 1 0
补码加减交替除法:
被除数(余数) 商
0 0 . 1 0 0 1 1 1 0 . 0 0 0 0 0 0 + 1 1 . 0 1 0 1 0 1 试减,x、y同号,+[-y]补 1 1 . 1 1 1 1 0 0
1? 1 1 . 1 1 1 0 0 0 0 . + 0 0 . 1 0 1 0 1 1 r、y异号,+[y]补 0 0 . 1 0 0 0 1 1
1? 0 1 . 0 0 0 1 1 0 0.1
+ 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 0 0 . 0 1 1 0 1 1
1? 0 0 . 1 1 0 1 1 0 0.1 1
+ 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 0 0 . 0 0 1 0 1 1 被除数(余数) 商
1? 0 0 . 0 1 0 1 1 0 0 . 1 1 1 + 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 1 1 . 1 0 1 0 1 1
1? 1 1 . 0 1 0 1 1 0 0.1 1 1 0 + 0 0 . 1 0 1 0 1 1 r、y异号,+[y]补 0 0 . 0 0 0 0 0 1
1? 0 0 . 0 0 0 0 1 0 0.1 1 1 0 1
+ 1 1 . 0 1 0 1 0 1 r、y同号, +[-y]补 1 1 . 0 1 0 1 1 1 1? 0.1 1 1 0 1 1 —— 恒置1 + 0 0 . 1 0 1 0 1 1 r、x异号,(恢复余数) 0 0 . 0 0 0 0 1 0 且r、y异号, +[y]补 注:恒置1引入误差。 x?y=[x?y]补= 0.111 011 [r]补=0.000 010,r=r*=0.000 000 000 010 (2)x= -0.101 01,y=0.110 11 [x]原=1.101 01 x*= 0.101 01
y* = [y]原 = [y]补= y = 0.110 11 [-y*]补= [-y]补= 1.001 01 [x]补= 1.010 11
q0 = x0 ? y0 = 1 ? 0 = 1 x*?y*= 0.110 00 [x?y]原=1.110 00 x?y = -0.110 00 r*=0.110 00×2-5
=0.000 001 100 0