浮點數儲存理解誤區

2021-07-05 22:47:25 字數 1058 閱讀 9525

計算機中浮點數的儲存分為三部分,符號位、指數、有效值。

我們用1.f表示浮點數有效值。單精度的有效數值有23位,但計算機預設整數部分都為1,所以實際上有效值有24位。2^24≈10^7,因此在十進位制中的有效位是7位。指數部分有8位二進位制,256個數(0~255),因為指數有符號,同時0和255有其它用途(我現在不知道為啥),剩下254個數,因此指數範圍-126~127(也不清楚為啥不是-128~127),之前以為在10進製下小數點就可以浮動254個位置了,但這是二進位制下浮動254個位置。2^254≈10^76,因此十進位制下小數點左右浮動的長度是38個。

單精度下最大的數

1.11111111111111111111111*2^127≈3.402823669e+38

單精度下最小的數

1.0000000000000000000000*2^(-126)≈1.175494351e-38

同樣的,雙精度的有效位是15~16位,範圍是2.2e-307~1.8e307

補充:

看了《深入理解計算機系統》裡面介紹ieee浮點編碼定義。根據指數的不同位表示模式,將浮點數值分為三類:規格化值、非規格化值、特殊值。

a.規格化值就是指數部分不等於0、255(以單精度為例),也即位模式不全為1,也不全為0。有效數字預設為1開頭的數。即如果有效數字位是[fn-1,fn-2,….f2,f2],它表示的數實際上是1.fn-1….f2f1。這樣看有效位就多了一位。

b.非規格化值就是指數部分為0,也即位模式全為0。有效數字位表實際值。

c.特殊值就是指數部分全為1。當有效數字位全為0時表示無窮大,當有效數字位不全為0時,表示nan(not a number不是乙個數)

有一點讓我困惑,將浮點數值分出規格化與非規格化,表面上看就是多了一位表示浮點數,除此之外有什麼作用呢?

理解浮點數儲存

b 整體呈現 b size medium 二進位制浮點數是以符號數值表示法格式儲存,將最高效位元指定為符號位元 sign bit 指數部份 即次高效的e位元,為浮點數中經指數偏差 exponent bias 處理過後的指數 小數部份 即剩下的f位元,為有效位數 significand 減掉有效位數本...

浮點數 儲存

關鍵字 體系結構 ieee754 浮點數 儲存 main 如果不執行上面的 讓我們來直接判斷,輸出的結果會是什麼?而在你執行程式之後,結果卻很讓人詫異 123.456001。為什麼會是123.456001?有六位小數可以理解,最後那個1是為何?有很多人解釋說最後那個1是亂碼,隨機的。嘿嘿 其實無論你...

理解浮點數的儲存規則

早就想知道浮點數的儲存原理 從 single 開始理解.single 單精度浮點數 32 位 s ef18 23 如浮點數 13.625 1 10 1 3 10 0 6 10 1 2 10 2 5 10 3 其二進位制表示是 1101.101 1 2 3 1 2 2 0 2 1 1 2 0 1 2 ...