1樓:來知曉
目錄
浮點儲存本質
IEEE標準演算法
例項分析
參考資料
目前計算機中多採用IEEE確定的浮點儲存標準演算法,核心原理為將浮點的整數用2的指數來表達壓縮,小數用2的負指數來表達壓縮。
分為指數字+小數字,將整數的表達更壓縮
float: 32位固定分配為1bit符號位,8bits指數字,23bits尾數字(注:不完全是小數)
double:64位固定分配為1bit符號位,11bits指數字,52bits尾數字(注:不完全是小數)
浮點儲存總體過車如下圖:
基本流程如下圖:
下面以19.625的float儲存為例,逐條具體分析:
整數轉換,除2取餘19直接轉為二進位制10011
小數轉換,乘2取整0.625等於1*2e-1+0*2e-2+1*2e-3,對應二進位制:101
0.625x2=1.25,取整1,1對應的權重是2e-1=0.5
0.25x2=0.5,取整0,0對應的權重是2e-2=0.25
0.5x2=1,取整1,1對應的權重是2e-3=0.125
從前往後得到權重由大到小,所以二進位制結果按順序取得為101
結果組合將整數部分和小數部分的二進位制組合
19.625對應10011.101
注:以上流程本質與定點數相同,結果與Q26標的定點數相同
科學計數法移動小數點到第1位有效位後面
將10011.101表示為1.0011101*2e4,尾數部分中含有整數(粉色部分)和小數(藍色部分)
指數偏移做偏移,將2^4的指數4+127=131(10000011)
採用+127偏移目的,是為了保證用無符號數,也能表示負數,比如8位的-127,偏移後就是0,從0開始對映-127(此處目的部分存疑)
拼接組合科學計數:1.0011101*2e4
指數部分:10000011
尾數部分:0011101
總體結果:0 - 10000011 - 0011101 - 00000000....
組合原則:符號位 - 指數部分 - 尾數部分 - 不足補零
以上,具體展示了乙個浮點數轉換到計算機中的二進位制儲存過程,其他浮點轉換依此類推。
參考資料
計算機中的浮點數在數軸上分布均勻嗎?
Milo Yip的解答很直觀。我來對結果做些理論解釋。下圖是IEEE754單精度浮點數在記憶體中的表示法。綠色部分為指數部分,紅色部分為尾數部分。這個表示法的具體解讀可以參考float的精範圍是如何求出來的?坡下碎石的回答。只考慮正數情況時,最高位的符號位為0。2.0f的表示方法如下圖。這時指數部分...
在計算機中,如何表示很大的數字?
朝辭白帝彩雲間 8bit的儲存可以用最後一位表示後面是否還有資料。用0000 001 0表示1,用0100 000 1表示後面還有資料,後面的資料是0000 100 0,所以最後表示0100 000 0000 100。只有變長的資料才能表示無窮。固定長度的資料不可能。 計算機的什麼32位整形變數,只...
計算機中前端和後端有什麼區別?
像你到電影院的機器上取票,看到的介面都屬於前端的範疇。而展示在前端介面上的資料,就是有後端提供的。後端提供資料,前端負責展示。發展的話後端一般職級會更高一些,因為會對業務更了解,技術深度也更深,但也更難。前端因為跟頁面打交道,所以工作中成就感會比後端更強。前後端的區別 選擇前端還是後端,首要看興趣。...