以下內容供計算機學習者參考,非專業人士慎看,因為可能會看不懂。
1.計算機中浮點數的構成分為三個部分:符號位,指數位和小數位。
符號位決定了這個浮點數的正負,指數位和小數位決定了這個浮點數的大小。
2.IEEE為了讓浮點數可以表示所有的情況,所以把浮點數分為四種情況:規格化、非規格化、無窮大和NaN
規格化是為了表示浮點數的一般情況。
非規格化是為了表示0和非常接近0的浮點數。
無窮大是為了表示正負無窮大。
NaN是為了表示非正常數情況,比如虛數。
4.以單精度浮點數float為例,float符號位佔1位,指數佔8位,小數位佔23位。
規格化的:指數位既不為0也不為255。
非規格化:指數位全為0。
無窮大:指數全為1,小數位全為0,正負由符號位決定,1為負無窮大,0為正無窮大。
NaN:指數位全為1,小數位不為0。
3.為了讓指數位能是負數,所以引入了一個叫「偏置」的量,這個量的值為:2^(k-1)-1,其中k為指數位的位數。
在實際計算過程中要加上或者減去這個偏置量。
4.規格化:把浮點數轉化為十進位需要把指數位減去偏置量。
非規格化:把浮點數轉化為十進位需要把指數位加1再減去偏置量。這一點很特殊需要注意。
5.規格化的小數部分其實是隱含了開頭的1,比如二進位數1.1101,在規格化浮點數的小數部分只會記錄1101,會省略開頭的1,所以在實際計算中要把這個1加上。
非規格化的小數部分沒有隱含開頭的1,它的小數部分就是「真值」,這一點需要特別注意。