IEEE754浮點數表示
1. 將(1101.1101)₂做正規化
// 小數點往前移3格,且小數點前第一位是1
1101.1101 = 1.1011101*2³
IEEE754存放方式
S:符號,表示正負值,0為正,1為負 E:指數,又稱Characteristic value * 有兩種作法[1-8](https://ithelp.ithome.com.tw/articles/10297505) 1. 超碼表式(excess code):這裡會是超127碼 = 2(⁸ᵇⁱᵗ⁻¹)-1 2. 用二補數表示 M:小數,小數點以後的數,又稱Fraction
// 正數為0(為什麼最左邊數字是1卻是正數? 這裡題目沒有說是用二補數表示這個值,只有說2進位)
S:0
// 超碼表示32bit為超127碼
E:
1. 超碼表式 : 3+127 = 130 = 10000010
2. 用二補數表示 : 3 = 00000011
// 小數點以後的數,未滿23個bit後面自動填入0
M:101110100000...
QA 時間
昨天題目:用-(0.00101101)₂用超16碼表示浮點數SEM存放方式
昨天答案:
// 小數點往後移2格
-(0.00101101)₂ = -(0.101101)*2⁻²
// 負數為1
S:1
// 超碼表示5bit為超16碼
E:
1. 超碼表式 : -2+16 = 14 = 01110
2. 用二補數表示 : -2 = -(00010) = 11110
// 小數點以後的數,未滿10個bit後面自動填入0
M:1011010000
小故事 : 為什麼會有浮點數誤差?
有一些數值在轉二進制的時候無法被精確的進位
像是(1.5)₁₀= (0001.1000)₂
但是(1.3)₁₀= (0001.0100110011001100......)₂無法完整進位一直無限循環下去
由於32bitSEM的M最多只能存23個bit,因此之後從二進位轉回十進位時會有誤差
而就算是用倍精確64bit,M能多存放到52bit,但依舊解決不了無法完整進位的問題
分類會依照第一篇介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正
以下參考連結在學習過程中覺得非常有幫助:
-WIKI
-從 IEEE 754 標準來看為什麼浮點誤差是無法避免的
-台大線上課程