浮點數在計算機中的儲存格式:符號位 + 指數字 + 尾數字
符號位 指數字 尾數字
float 1位 8位 23位 共32位
double 1位 11位 52位 共64位
任何浮點數都可表示為:±1.m × 2e
符號位(sign):表示式中的±,0表示正數,1表示負數。
指數字(exponent):表示式中的e,指數字的值是e+e之後的值。(e: float 127, double 1023)
尾數字(mantissa):表示式中的m。二進位制轉十進位制:n1 × 1/2 + n2 × 1/4 + n3 × 1/8 + ……
舉例:(1) -12
表示式為-1.5 × 23
二進位制表示位:1 10000010 10000000000000000000000
符號位1:表示負數
指數字10000010:十進位制為130,130 - 127 = 3
尾數字:1 × 1/2 = 0.5
(2) 0.25
表示式為1.0 × 2-2
二進位制表示位:0 01111101 00000000000000000000000
符號位0:表示正數
指數字01111101:十進位制為125,125 - 127 = -2
尾數字:0
(3) 1.05
表示式為1.05 × 20
二進位制表示位:0 01111111 00001100110011001100110
符號位0:表示正數
指數字01111111:十進位制為127,127 - 127 = 0
尾數字:00001100110011001100110
0×1/2 + 0×1/4 + 0×1/8 + 0×1/16 + 1×1/32 + …… = 0.0499999523162841796875
下面程式可以顯示乙個float型數的二進位制儲存
#include
using namespace std;
int main()
else
if (i <= 22)
}cout << endl;
cout.fixed;
cout.precision(23);
cout << sum << endl;
return 0;
}輸出結果:
0.0499999523162841796875
浮點數 儲存
關鍵字 體系結構 ieee754 浮點數 儲存 main 如果不執行上面的 讓我們來直接判斷,輸出的結果會是什麼?而在你執行程式之後,結果卻很讓人詫異 123.456001。為什麼會是123.456001?有六位小數可以理解,最後那個1是為何?有很多人解釋說最後那個1是亂碼,隨機的。嘿嘿 其實無論你...
浮點數的儲存
浮點數 float或double 在儲存方式上都遵從ieee的規範,float遵從的是ieee r32.24,資料佔據32bit,double遵從的是r64.53,資料占用64bit。8.25 41 04 00 00 高位在前 0100 0001 0000 0100 0000 0000 0000 0...
浮點數的儲存以及 浮點數的比較
浮點數的儲存採用的是近似的原理 float儲存格式為 s e m 1位符號位 8位指數 23位尾數 轉成數值即為 v 1 s 1.m 2 e 127 對於16.5轉成二進位制為00010000.1 1.00001 2 4,那麼在記憶體的表示為 符號位 指數4 127 131 尾數 0 1000001...