通常用在浮點數(shù)的階碼中?
算機中的移碼移碼(又叫增碼)是符號位取反的補碼,一般用做浮點數(shù)的階碼,引入的目的是為了保證浮點數(shù)的機器零為全0。
①移碼的定義:設(shè)由1位符號位和n位數(shù)值位組成的階碼,則 [X]移=2En + X -2n≤X ≤ 2n
例如: X=+1011 [X]移=11011 符號位“1”表示正號
X=-1011 [X]移=00101 符號位“0”表示負號
②移碼與補碼的關(guān)系: [X]移與[X]補的關(guān)系是符號位互為相反數(shù)(僅符號位不同),
例如: X=+1011 [X]補=01011 [X]移=11011
X=-1011 [X]補=10101 [X]移=00101
③移碼運算應(yīng)注意的問題:
◎?qū)σ拼a運算的結(jié)果需要加以修正,修正量為2En ,即對結(jié)果的符號位取反后才是移碼形式的正確結(jié)果。
◎移碼表示中,0有唯一的編碼——1000…00,當出現(xiàn)000…00時(表示-2En),屬于浮點數(shù)下溢。
浮點數(shù)的運算規(guī)則
1、浮點加減法的運算步驟
設(shè)兩個浮點數(shù) X=Mx※2Ex Y=My※2Ey
實現(xiàn)X±Y要用如下5步完成:
①對階操作:小階向大階看齊
②進行尾數(shù)加減運算
③規(guī)格化處理:尾數(shù)進行運算的結(jié)果必須變成規(guī)格化的浮點數(shù),對于雙符號位的補碼尾數(shù)來說,就必須是
001×××…×× 或110×××…××的形式
若不符合上述形式要進行左規(guī)或右規(guī)處理。
④舍入操作:在執(zhí)行對階或右規(guī)操作時常用“0”舍“1”入法將右移出去的尾數(shù)數(shù)值進行舍入,以確保精度。
⑤判結(jié)果的正確性:即檢查階碼是否溢出
若階碼下溢(移碼表示是00…0),要置結(jié)果為機器0;
若階碼上溢(超過了階碼表示的最大值)置溢出標志。
例題:假定X=0 .0110011*211,Y=0.1101101*2-10(此處的數(shù)均為二進制) ?? 計算X+Y;
解:[X]浮: 0 1 010 1100110
[Y]浮: 0 0 110 1101101
符號位 階碼 尾數(shù)
第一步:求階差: │ΔE│=|1010-0110|=0100
第二步:對階:Y的階碼小, Y的尾數(shù)右移4位
[Y]浮變?yōu)?0 1 010 0000110 1101暫時保存
第三步:尾數(shù)相加,采用雙符號位的補碼運算
00 1100110
+00 0000110
00 1101100
第四步規(guī)格化:滿足規(guī)格化要求
第五步:舍入處理,采用0舍1入法處理
故最終運算結(jié)果的浮點數(shù)格式為: 0 1 010 1101101,
即X+Y=+0. 1101101*210
2、浮點乘除法的運算步驟
①階碼運算:階碼求和(乘法)或階碼求差(除法)
即 [Ex+Ey]移= [Ex]移+ [Ey]補
[Ex-Ey]移= [Ex]移+ [-Ey]補
②浮點數(shù)的尾數(shù)處理:浮點數(shù)中尾數(shù)乘除法運算結(jié)果要進行舍入處理
例題:X=0 .0110011*2E11,Y=0.1101101*2E-10
求X※Y
解:[X]浮: 0 1 010 1100110
[Y]浮: 0 0 110 1101101
第一步:階碼相加
[Ex+Ey]移=[Ex]移+[Ey]補=1 010+1 110=1 000
1 000為移碼表示的0
第二步:原碼尾數(shù)相乘的結(jié)果為:
0 10101101101110
第三步:規(guī)格化處理:已滿足規(guī)格化要求,不需左規(guī),尾數(shù)不變,階碼不變。
第四步:舍入處理:按舍入規(guī)則,加1進行修正
所以 X※Y= 0.1010111※2E+000