C語言中浮點數在記憶體中的儲存方式

2021-08-03 04:37:59 字數 1086 閱讀 9434

關於多位元組資料型別在記憶體中的儲存問題

int ,short 分別是4、2位元組。他們在記憶體中的儲存方式下面舉個例子說明。

int data = 0xf4f3f2f1;

其中低位存放在編址小的記憶體單元,高位存放在編址高的記憶體單元

如下:0x8001 

0x8002 

0x8003

資料: 

f1 f2 

f3 f4

//上面是小端模式,還有大端儲存模式 //

// 根據ieee在2023年制定的標準來處理浮點數

單精度浮點數用4位元組,包括1位符號位s(整數為0,負數為1),8位指數字e,23位有效位f

浮點型使用的是科學計數法,比如十進位制的12345可以表示為1.2345 * 10^4(表示10的4次冪)

用二進位制表示為 1.1000000111001 * 2^13

所以計算機中用浮點數表示12345這個十進位制應該是這樣的,s位為0,因為是正數,指數字為13+127=140(127為單精度浮點數偏移值,為了表示只有小數部分的數),有效位為1000000111001

計算的時候用 (-1)^s * 1.f * 2^(e-127) ,結果就是 1* 1.1000000111001 * 2^(140-127=13) ,和我們剛才表示的一樣

還比如,十進位制小數0.125轉換為二進位制小數0.001可以表示為 1* 1.0 * 2^(124-127=-3)

double,雙精度浮點數有1位符號位、11位指數字和52位有效數

知道公式

n=(-1)^s*m*2^e

e=|e|-bias

bias = 2^(k-1)-1(k為e的位數)

m=|1.m|

知道12345在記憶體中的10進製表示以後

0x4640e400 = 0(100 0110 0)<100 0000 1110 0100 0000>

括號中的數字為|e| = 140 所以e=140-127=13

尖括號中的數字為m=|1.m|=|1.100000011100100|=1.506958008

ok,代入公式n = (-1)^0*1.506958008*2^13=12345

完工!!

C語言中浮點數在記憶體中的儲存方式

關於多位元組資料型別在記憶體中的儲存問題 0x8001 0x8002 0x8003 資料 f1 f2 f3 f4 上面是小端模式,還有大端儲存模式 根據ieee在1985年制定的標準來處理浮點數 單精度浮點數用4位元組,包括1位符號位s 整數為0,負數為1 8位指數字e,23位有效位f 浮點型使用的...

C語言中浮點數在記憶體中的儲存方式

關於多位元組資料型別在記憶體中的儲存問題 int short 各自是4 2位元組。他們在記憶體中的儲存方式以下舉個樣例說明。上面是小端模式。還有大端儲存模式 依據ieee在1985年制定的標準來處理浮點數 單精度浮點數用4位元組,包含1位符號位s 整數為0,負數為1 8位指數字e。23位有效位f 浮...

C語言浮點數在記憶體中的儲存

1.浮點數包括 float,double,long double 2.浮點數儲存公式 1 s m 2 e 1 s表示符號位,當s 0時,這個浮點數為正數,當 s 1時,浮點數為負數 m表示有效數字,大於等於1,小於2 2 e表示指數字 例 十進位制5.0,寫成二進位制是101.0,相當於1.01 2...