為什么要用移碼來表示階碼(指數)呢?


為什么要用移碼來表示階碼(指數)呢?

這是為了方便浮點數在進行加減運算時進行對對階操作,也就是比較大小

比如(1.01x2^-1)+(1.11x2^3)這兩個數相加 ,在科學計數法中,通常是將小階向大階看齊。也就是將-1次方變為3次方。

如果用補碼來表示-1:111;用補碼表示3:011;很明顯二進制中111比011大。所以結果會是第一個數大於第二個數,這是明顯不對的。

所以通常是在階的基礎上加上偏置常數,當偏置常數為4時,-1+4=3;3+4=7;所以結果會是第二個數大於第一個數,這樣才正確。

這就是為什么要用移碼來表示浮點數中的階的原因

階碼=移碼=偏移常數+真值

 

那為什么浮點型用(2^(n-1)-1)而不是(2^(n-1))來作為偏移值呢,比如8位機器數采用127而不是128作為偏移值?

袁春風老師給的解釋是階碼11111110以127作為偏移值轉化為真值為127

而以128作為偏移值轉化為真值為126

可以看出偏移值為127時,真值大一些,也就是可表示范圍會大一點。

本來這里我有個疑問是階碼00000001以127作為偏移值轉化為真值為-126;而以128作為偏移值轉化為真值為-127

這里可以看出當以128位偏移值時真值會更小,也就是小數點后面的數更多。

想了一會后,確實可以說明以127作為偏移值可表示范圍會更大,但是以128作為偏移值精確度會更高

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM