對於32位浮點數
sign: 符號,1位
exponent: 指數,8位,偏碼
fraction: 分數,23位,原碼
特殊值
指數域的編碼值 = 指數的實際值 + 127
這樣按照字典序的順序就可以比較兩個指數域的編碼值的大小,在比較兩個浮點數大小時比使用原碼方便
規約形式
「規約」是指用唯一確定的浮點形式去表示乙個值。
即要求fraction部分最高有效位為1,且指數域的編碼值不為0
由於這種表示下的尾數有一位隱含的二進位制有效數字(因為最高位總是1,所以按照規約數解析時,自動在最前面新增1,這個1是不儲存在bit中的,非規約數不會自動新增1),為了與二進位制科學計數法的尾數(mantissa)相區別,ieee754稱之為有效數(significant)。
ieee754要求
exponent編碼值為全0,fraction部分儲存的編碼值不為全0時,按照非規約數解析,此時實際指數看作-126而不是-127
exponent為1~2e-1,-2e-2~-1,按照規約數解析
非規約形式
exponent為0,fraction不為0,之所以同時存在非規約形式,是因為絕對值最小的規約浮點數為1.0*2-126,絕對值次小的規約浮點數為(1+2-23)*2-126,兩者距離2-149,而絕對值最小的規約浮點數於0的距離是2-126,可以看出,兩個絕對值很小的規約浮點數之間的距離比它們到0的距離近很多,這樣導致兩個不等的很小的規約浮點數的差變成0,這種方式稱作突然式下溢位(abrupt underflow)。而漸進式下溢位(gradual underflow)因為引入非規約浮點數,最小的非規約浮點數的絕對值為2-23*2-126,次小的為2-22*2-126,兩者距離2-149,同時,最小的非規約浮點數與0之間的距離也是2-149。
浮點數舉例
浮點數的二進位制表示 IEEE 754標準
浮點數是我們在程式裡常用的資料型別,它在記憶體中到底是怎麼樣的形式存在,是我了解之前是覺得好神奇,以此記錄,作為學習筆記。現代計算機中,一般都以ieee 754標準儲存浮點數,這個標準的在記憶體中儲存的形式為 對於不同長度的浮點數,階碼與小數字分配的數量不一樣,如下 對於32位的單精度浮點數,數符分...
詳解IEEE 754標準(浮點數的二進位制表示)
浮點數是我們在程式裡常用的資料型別,它在記憶體中到底是怎麼樣的形式存在,是我了解之前是覺得好神奇,以此記錄,作為學習筆記。現代計算機中,一般都以ieee 754標準儲存浮點數,這個標準的在記憶體中儲存的形式為 對於不同長度的浮點數,階碼與小數字分配的數量不一樣,如下 對於32位的單精度浮點數,數符分...
單精度浮點數(IEEE754)
單精度浮點數佔據4個位元組,4個位元組的分配如下 a 第一位為符號位,0表示正,1表示負 b 第2 9位為階碼,採用移碼表示 c 第10 32位為尾數,採用原碼表示。1 給定32位串,如何轉換成十進位制數 假設記憶體中存在32位串 cd cc 08 41。因為intel cpu採用little en...