浮點數的儲存

2021-05-23 09:20:07 字數 1256 閱讀 4866

浮點數在計算機中的儲存格式:符號位 + 指數字 + 尾數字

符號位      指數字    尾數字

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...