移碼(又叫增碼)是符號(hào)位取反的補(bǔ)碼,一般用指數(shù)的移碼減去1來做浮點(diǎn)數(shù)的階碼,引入的目的是為了保證浮點(diǎn)數(shù)的機(jī)器零為全0。
基本介紹
緣由
用補(bǔ)碼表示階碼的時(shí)候,當(dāng)階碼無限小,產(chǎn)生了下溢的時(shí)候,階碼變成了0,那么這個(gè)浮點(diǎn)數(shù)的值變?yōu)榱?。
而實(shí)際上這個(gè)數(shù)是無限接近于零的。那么我們就需要取出其中的 "-0“值作為機(jī)器零。
定義
移碼(又叫增碼)是符號(hào)位取反的補(bǔ)碼,一般用做浮點(diǎn)數(shù)的階碼,引入的目的是為了保證浮點(diǎn)數(shù)的機(jī)器零為全0。
①移碼的定義:設(shè)由1位符號(hào)位和n位數(shù)值位組成的階碼,則 [X]移=2En + X (-2n 例如: X=+1011 [X]移=11011 X=-1011 [X]移=00101 ②移碼與補(bǔ)碼的關(guān)系: [X]移與[X]補(bǔ)的關(guān)系是符號(hào)位互為相反數(shù)(僅符號(hào)位不同), 例如: X=+1011 [X]補(bǔ)=01011 [X]移=11011 X=-1011 [X]補(bǔ)=10101 [X]移=00101 ③移碼運(yùn)算應(yīng)注意的問題: ◎?qū)σ拼a運(yùn)算的結(jié)果需要加以修正,修正量為2En ,即對(duì)結(jié)果的符號(hào)位取反后才是移碼形式的正確結(jié)果。 ◎移碼表示中,0有唯一的編碼——1000…00,當(dāng)出現(xiàn)000…00時(shí)(表示-2En),屬于浮點(diǎn)數(shù)下溢。 符號(hào)位 階碼 尾數(shù) 第一步:求階差: │ΔE│=|1010-0110|=0100 第二步:對(duì)階:Y的階碼小, Y的尾數(shù)右移4位 [Y]浮變?yōu)?0 1 010 0000110 1101暫時(shí)保存 第三步:尾數(shù)相加,采用雙符號(hào)位的補(bǔ)碼運(yùn)算 00 1100110 +00 0000110 00 1101100 第四步:規(guī)格化,滿足規(guī)格化要求 第五步:舍入處理,采用0舍1入法處理 故最終運(yùn)算結(jié)果的浮點(diǎn)數(shù)格式為: 0 1 010 1101101, 即X+Y=+0. 1101101*210 浮點(diǎn)數(shù)的運(yùn)算規(guī)則 1、浮點(diǎn)加減法的運(yùn)算步驟 設(shè)兩個(gè)浮點(diǎn)數(shù) X=Mx※2Ex Y=My※2Ey 實(shí)現(xiàn)X±Y要用如下5步完成: ①對(duì)階操作:小階向大階看齊 ②進(jìn)行尾數(shù)加減運(yùn)算 ③規(guī)格化處理:尾數(shù)進(jìn)行運(yùn)算的結(jié)果必須變成規(guī)格化的浮點(diǎn)數(shù),對(duì)于雙符號(hào)位的補(bǔ)碼尾數(shù)來說,就必須是 001×××…×× 或110×××…××的形式 若不符合上述形式要進(jìn)行左規(guī)或右規(guī)處理。 ④舍入操作:在執(zhí)行對(duì)階或右規(guī)操作時(shí)常用“0”舍“1”入法將右移出去的尾數(shù)數(shù)值進(jìn)行舍入,以確保精度。 ⑤判結(jié)果的正確性:即檢查階碼是否溢出 若階碼下溢(移碼表示是00…0),要置結(jié)果為機(jī)器0; 若階碼上溢(超過了階碼表示的最大值)置溢出標(biāo)志。 例題: 假定X=0 .0110011*211,Y=0.1101101*2-10(此處的數(shù)均為二進(jìn)制) ?? 計(jì)算X+Y; 解:[X]浮: 0 1 011 1100110 [Y]浮: 0 0 110 1101101 2、浮點(diǎn)乘除法的運(yùn)算步驟 ①階碼運(yùn)算:階碼求和(乘法)或階碼求差(除法) 即 [Ex+Ey]移= [Ex]移+ [Ey]補(bǔ) [Ex-Ey]移= [Ex]移+ [-Ey]補(bǔ) ②浮點(diǎn)數(shù)的尾數(shù)處理:浮點(diǎn)數(shù)中尾數(shù)乘除法運(yùn)算結(jié)果要進(jìn)行舍入處理 例題: 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]補(bǔ)=1 010+1 110=1 000 1 000為移碼表示的0 第二步:原碼尾數(shù)相乘的結(jié)果為: 0 10101101101110 第三步:規(guī)格化處理:已滿足規(guī)格化要求,不需左規(guī),尾數(shù)不變,階碼不變。 第四步:舍入處理:按舍入規(guī)則,加1進(jìn)行修正 所以 X※Y= 0.1010111※2E+000 生物學(xué)中的移碼 在生物學(xué)中,移碼指因?yàn)榛蛲蛔儗?dǎo)致單個(gè)堿基增減,造成的編碼混亂,導(dǎo)致無法正常進(jìn)行堿基互補(bǔ)配對(duì),從而生物性狀的改變。 參考資料 >