原码一位乘
[例 1] x = 0. 1101,y-0. 1011,求x y-
解,部分积
0 Ox 0 0 0 0
+0 0. 1 1 0 1
0 0. 1 1 0 1
-> 0 0. 0 1 1 0
+ D D. 1 1 0 1
0 1, 0 0 1 1
—> 0 0. 1 0 0 1
+ 0 0.0000
0 0, 1 0 0 1
-> 0 0+ 0 10 0
+ 0 0. 1 1 0 1
0 1, 0 0 0 1
->0 0+ 1 0 0 0
乘数
¥: 1 0 1 1
lyj 01
说明
ZO-O
力=5
右移.得L
V3=1,*x
右移.得如
vE,+o
右移,得工3
右移,#z4.x - y
所以 X- y=0J0001111
补码一位乘
[例]叫
h=0.1101,
[y]H=0.1011,求[x?v]补.
部分戒0 0. 0 0 0 0L 0 0 1 1
0.
乘数
10 1
+
1 i. o 0 1 1 T 1 1, 1 O 0 1 +。0. 0 0 0 0
1 1. 1 0 0 1
TI
0 10
T 1 1. 1 1 0 0+ 0 0. 1 1 O 1
0 0. 1 0 O 1T 0 0. 0 10 0
+ 1 L 0 0 1 1
说明
Vn+l=O
VnVnH=10,+l?X]补
右移1位 VnVg=lL + O
右移3位
ynyn+i=oi/+[x]?
ynvn+i=iOr+[-x]tt
1 1. 0 1 1 1
1 1. 1 O 1 1
十 。0. 1 1。1
0 0. 1 0 0 0
iiii
右移,位
VnVz=OL+[x]补最后一步不移位
补码一位除
[例20] = 0,101001, y =0.111,求上亍尸击
得【解;】[-yfcb=i ooi
得
余数为狗
余数左移
加F
1.1 1 000 1 <0
1.1 000 1
0.1 1 1
%=0
余数为正
余数左移
减F
0.0 1 1 0 1
0,1 1 01 1.0 0 1
>0
余数为负
余数左移
加F
1d 111
1J 11
0.1 1 1
<0
如=0
余数为正
0.1 1 0
>0
q,=1 故
被除数x 0.10 100 1
减尸1.0 0 1
商 q=qo.qm%=Qd°‘
余数 (O.OOr^r^=0.000110
原码除法
(1)恢复余数法
1 .恢复余数法
事实上,机器的运算过程和人毕竞不同,人会心算,一看就 知道够不够减。但机器却不会心算,必须先作减法,若余数 为正,才知道够减:若余数为负,才知道不够减.不够减时 必须恢复原来的余数,以便再继续往下运算。这种方法称 为恢复余数法。要恢复原来的余数,只要当前的余教加上 除数即可<■
例1 x".100L y=0J011t用恢复余数发求*戏。
解=[、人卜=风补=0.10。1 [yhr=o.ioii [-y]^=i.oioi
被除数x/余数r
0 0J 0 0 1
商数q
±fcylih-
1 1.0 1 0 1
1 1,1 1 1 0
±Mit—
0 0,1 0 1 1
0 0,1 0 0 1
—
0 1,00 1 0
0
±Lvlih-
1 1.0 1 0 1
0 0.0 1 1 1
4—
0 0J 1 1 0
0J
+f-vlih
1 L0 1 0 1
0 0.0 0 1 1
0 0.0 1 1 0
0.11
+[-Ylih
1 1.0 1 0 1
1 1.1 0 1 1
HvM 0 0.1 0 1 1
0 0.0 1 1 0
4-PyM 1 1.0 1 0 1
0 0.0 0 0 1
故得:[q】原=01101,余数[r]原=0.0001 即r=2^xr4
2 .加减交替法
对恢复余数法来说,由于要恢复余数,使除法进行过程的步数 不固定,因此控制比较复杂。实际中常用不恢复余数法,又称 加减交替法。其特点是运算过程中如出现不够减,则不必恢复 余数,根据余数符号,可以继续往下运算,因此步数固定,控制简 单。
原码加减交替法的规则是:与余数为正时,商“俨,余数左 移一位,减除数;当余数为负时,商“0”,余数左移一位, 加除数。证明如下:
除数每一步运算所得的余数rji=1,2,... ,n,r°=x)可以通过蒋 前一步的余数(第一步为r°=x)左移一位减除数y得到,即
【产2j?y
如果r,<0,商上“0”,并恢复余数(即+y),然后左移一位(即 乘2),再做减y运算,得到
即 "2(”)夕=2啊
这说明,第i步除数的余数rj=2j?y若为负,要求得下一 步的新余数%1,不必恢复余数,只要将左移一位(乘2) 再加上y即得Si ,然后再由的正负决定上商值。
例2 x