計算機中是如何儲存和處理浮點數的

時間 2021-10-15 20:44:43

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位整形變數,只...

計算機中前端和後端有什麼區別?

像你到電影院的機器上取票,看到的介面都屬於前端的範疇。而展示在前端介面上的資料,就是有後端提供的。後端提供資料,前端負責展示。發展的話後端一般職級會更高一些,因為會對業務更了解,技術深度也更深,但也更難。前端因為跟頁面打交道,所以工作中成就感會比後端更強。前後端的區別 選擇前端還是後端,首要看興趣。...