例题:
设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y]、[x-y]运算:
x = 2 − 011 × 0.100101 x = 2^{-011}×0.100101 x=2−011×0.100101 y = 2 − 101 × ( − 0.011110 ) y = 2 ^ {-101}×(-0.011110) y=2−101×(−0.011110)
解 :先将 x x x 与 y y y 化为浮点数的一般格式:(双符号位)
x = 11 011 , 00. 100101 x = 11\quad 011,\quad 00.\quad100101 x=11011,00.100101
y = 11 101 , 11. 011110 y = 11\quad 101, \quad 11. \quad 011110 y=11101,11.011110
- 阶数对齐:
将两者阶数用补码表示,设补码分别为 E x , E y E_x,E_y Ex,Ey
-
E x = 11 101 E_x = 11 \quad 101 Ex=11101
-
E y = 11 011 E_y=11\quad 011 Ey=11011
-
E − y = 00 101 E_{-y} = 00\quad101 E−y=00101
-
△ E = 00 010 \bigtriangleup E=00\quad 010 △E=00010 将其转化成原码得: △ E [ 原 码 ] = ( 1 ) 00 010 \bigtriangleup E_{[原码]} = (1)00 \quad 010 △E[原码]=(1)00010 = ( + 2 ) 10 (+2)_{10} (+2)10 ,即 E x > E y E_x>E_y Ex>Ey
-
本着低阶向高阶看齐:所以应该让 y y y 的阶数加二。对应的 y y y 的尾数右移,此时:
-
y = 11 011 , 11. 110111 ( 10 ) y= 11\quad 011, \quad 11. \quad 110111(10) y=11011,11.110111(10)
-
x = 11 011 , 00. 100101 x = 11\quad 011,\quad 00.\quad100101 x=11011,00.100101
- 尾数求和
-
x 尾 数 + y 尾 数 = ( 1 ) 00 . 011100 ( 10 ) x_{尾数}+y_{尾数} = (1)00\quad.011100(10) x尾数+y尾数=(1)00.011100(10)
-
得到 [ x + y ] = 11 011 , 00. 011100 ( 10 ) [x+y]=11\quad011,\quad00.\quad011100(10) [x+y]=11011,00.011100(10)
- 规格化处理
- [ x + y ] = 11 100 , 00. 111001 ( 0 ) [x+y] = 11 \quad 100,\quad00.\quad111001(0) [x+y]=11100,00.111001(0)
- 舍入处理
- 采用** 0 0 0舍 1 1 1入法**处理,所以舍弃 0 0 0
- 判溢出
- 阶码符号位为 11 11 11,故不溢出。
- 得到 [ x + y ] [x+y] [x+y]的结果为$ 11 \quad 100,\quad00.\quad111001 = 2^{-100} × 0.111011$
- 同理得到 [ x − y ] [x-y] [x−y]的结果为$ 11 \quad 011,\quad00.\quad101101 = 2^{-011} × 0.101101$
在判断溢出时,若尾数符号位为 01 01 01或 10 10 10时,虽然此时数值发生了溢出,我们认可通过对这个浮点数进行规格化(向左或向右规格化处理),从而使得数值的尾数不溢出,但是当我们调整尾数,对它进行规格化后,(尾数不溢出)阶码溢出了,我们就认定这个机器数已经是溢出了的。 注:定点运算发生溢出时,应发生报错信息。