理解浮點數儲存

2021-08-31 07:50:45 字數 1363 閱讀 6598

[b]整體呈現[/b]

[size=medium]二進位制浮點數是以符號數值表示法格式儲存,將最高效位元指定為符號位元(sign bit);「指數部份」,即次高效的e位元,為浮點數中經指數偏差(exponent bias)處理過後的指數;「小數部份」,即剩下的f位元,為有效位數(significand)減掉有效位數本身的最高效位元。 如下圖所示:   +-+--------+-----------------------+   |s| exp | fraction |   +-+--------+-----------------------+

指數偏差

指數偏差(表示法中的指數為實際指數減掉某個值)為 2e-1 - 1,參見有符號數處理的excess-n。減掉乙個值是因為指數必須是有號數才能表達很大或很小的數值,但是有號數通常的表示法——二補數表示法(two's complement),將會使比較變得困難。為了解決這個問題,指數在儲存之前需要做偏差修正,將它的值調整到乙個無符號數的範圍內以便進行比較。此外,指數採用這種方法表示的優點還在於使得浮點數的正規形式和非正規形式之間有了乙個平滑的轉變。   範例    小數部分最高有效位由指數部分決定。如果指數在0 < exponent < 2e − 1之間,那麼小數部分最高有效位將是1,而且這個數將被稱為正規形式。如果指數是0,有效數最高有效位將會是0,並且這個數將被稱為非正規形式。這裡有三個特殊值需要指出:   如果 指數 是0 並且 小數部分 是0, 這個數±0 (和符號位相關)   如果 指數 = 2e − 1 並且 小數部分 是0, 這個數是 ±無窮大 (同樣和符號位相關)   如果 指數 = 2e − 1 並且 小數部分 非0, 這個數表示為不是乙個數(nan).   以上規則,總結如下:   形勢 指數 小數部分   零 0 0   非正規形式 0 非0   正規形式 1 到 2e − 2 任意   無窮 2e − 1 0   nan 2e − 1 非零   32位單精度   單精度二進位制小數,使用32個位元儲存。   1 8 23 位長   +-+--------+-----------------------+   |s| exp | fraction |   +-+--------+-----------------------+   31 30 23 22 0 位編號 (從右邊開始為0)   偏正值 +127

編輯本段數字

s為符號位,exp為指數字,fraction為有效數字。 指數部分即使用所謂的偏正值形式表示,實際值為表示值與乙個固定值(32位的情況是127)的和。採用這種方式表示的目的是簡化比較。因為,指數的值可能為正也可能為負,如果採用補碼表示的話,全體符號位s和exp自身的符號位將導致不能簡單的進行大小比較。正因為如此,指數部分通常採用乙個無符號的正數值儲存。單精度的指數部分是−126~+127加上127 ,指數值的大小從1~254(0和255是特殊值)。浮點小數計算時,指數值減去偏正值將是實際的指數大小。[/size]

浮點數儲存理解誤區

計算機中浮點數的儲存分為三部分,符號位 指數 有效值。我們用1.f表示浮點數有效值。單精度的有效數值有23位,但計算機預設整數部分都為1,所以實際上有效值有24位。2 24 10 7,因此在十進位制中的有效位是7位。指數部分有8位二進位制,256個數 0 255 因為指數有符號,同時0和255有其它...

浮點數 儲存

關鍵字 體系結構 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 ...