所有的浮點數值計算都遵循ieee 754規範。
ieee 754規定了四種表示浮點數值的方式:單精確度(32位)、雙精確度(64位)、延伸單精確度(43位以上,很少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。只有32位模式有強制要求,其他都是選擇性的。大部分程式語言都有提供ieee格式與算術,但有些將其列為非必要的。例如,ieee 754問世之前就有的c語言。ieee754標準包括ieee算術,但不算作強制要求(c語言的float通常是指ieee單精確度,而double是指雙精確度)。
表示位元的約定
我們將電腦上乙個長度為w的字(word)其中的位元,從記憶體位址低端到高階,以0到w−1的整數編碼,通常將記憶體位址低端的位寫在最右邊,以讓編號最小的位元與最低效位元(least significant bit或lsb,代表最小位數,改變時對數值影響最小的位元)一致。宣告這一點的必要性在於區分大端法和小端法,x86體系架構是小端序的資料儲存。
整體呈現
二進位制浮點數是以符號數值表示法格式儲存,將最高效位元指定為符號位元(sign bit);「指數部份」,即次高效的e位元,為浮點數中經指數偏差(exponent bias)處理過後的指數;「小數部份」,即剩下的f位元,為有效位數(significand)減掉有效位數本身的最高效位元。
32位單精度
單精度二進位制小數,使用32位儲存。
1 8 23 位長
+-+——–+———————–+
|s| exp | fraction |
+-+——–+———————–+
31 30 23 22 0 位編號 (從右邊開始為0)
偏正值 +127
64位雙精度
雙精度二進位制小數,使用64位儲存。
1 11 52 位長
+-+——–+———————–+
|s| exp | fraction |
+-+——–+———————–+
63 62 52 51 0 位編號 (從右邊開始為0)
偏正值 +1023
詳細介紹,請參考:
浮點數的二進位制
1.前幾天,我在讀一本c語言教材,有一道例題 include void main void 在我的編譯器下 編譯是會發生錯誤的。錯誤 cannot convert from int to float win7 vc6.0 sp6 執行結果如下 num的值為 9 pfloat的值為 0.000000 ...
浮點數轉化二進位制
乙個int型別表示的整數值是 2 31 2 31 1 32位二進位制表示 1111111111111111 11111111 11111111 011111111 11111111 11111111 1111111 類似整數聯想到浮點數是怎麼表示的呢?最初正常人可能為這樣想的 但是這樣好像表示的數也...
浮點數轉化為二進位制整型
任何資料在記憶體中都是以二進位制的形式儲存的,例如乙個short型資料1156,其二進位制表示形式為00000100 10000100。則在intel cpu架構的系統中,存放方式為 10000100 低位址單元 00000100 高位址單元 因為intel cpu的架構是小端模式。但是對於浮點數在...