float型別的資料儲存方式

2021-07-24 13:29:35 字數 1172 閱讀 3414

回顧預設轉換:

byte(1b),char(2b),short(2b) -- int(4b) -- long(8b) -- float(4b) -- double(8b)

問題:為什麼預設轉換時float型在long型後面?

原因:1.他們的底層儲存結構不同

2.float型別的表示範圍比long型大

long:2^63-1

float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*(2^3)^38 = 2*2^114 > 2^63

char型可以儲存乙個漢字嗎?

可以。char型佔兩個位元組。可以存下乙個漢字。

float型別數字在計算機中用4個位元組儲存(由於儲存方式不同,所以他表示的範圍比long能表示的範圍要大)。遵循ieee-754格式標準:

乙個浮點數有2部分組成:底數m和指數e

底數部分 使用二進位制數來表示此浮點數的實際值

指數部分 占用8bit的二進位制數,可表示數值範圍為0-255

但是指數可正可負,所以,ieee規定,此處算出的次方必須減去127才是真正的指數。

所以,float型別的指數可從-126到128

底數部分實際是占用24bit的乙個值,但是最高位始終為1,所以,最高位省去不儲存,在儲存中佔23bit

科學計數法。

格式:seee eeee emmm mmmm mmmm mmmm mmmm mmmm

s表示浮點數正負    

e指數加上127後的值得二進位制資料

m底數舉例:

17.625在記憶體中的儲存

首先要把17.625換算成二進位制:10001.101

整數部分,除以2,直到商為0,餘數反轉。

小數部分,乘以2,直到乘位0,進製順序取。

在將10001.101右移,直到小數點前只剩1位:

1.0001101 * 2^4 因為右移動了四位

這個時候,我們的底數和指數就出來了

底數:因為小數點前必為1,所以ieee規定只記錄小數點後的就好。所以,此處的底數為:0001101

指數:實際為4,必須加上127(轉出的時候,減去127),所以為131。也就是10000011

符號部分是正數,所以是0

綜上所述,17.625在記憶體中的儲存格式是:

01000001 10001101 00000000 00000000

float 資料的儲存方式

3.以下兩條輸出語句分別輸出什麼?c 難 float a 1.0f cout int a endl cout int a endl cout boolalpha int a int a endl 輸出什麼?float b 0.0f cout int b endl cout int b endl co...

float儲存方式

c語言 今天在程式中對uint32 t強制轉換float,結果發現是有損轉換,向大佬請教後得知是float儲存的比32bit的值小,所以通過詳細學習float儲存,彌補學習的短板。學習的出處為 感謝 1 s表示符號位,當s 0,v為正數 當s 1,v為負數 2 m表示有效數字,大於等於1,小於2。3...

float資料型別在記憶體中的儲存方式

我們都很熟悉int型別在記憶體中的儲存方式,即直接按照二進位制方式儲存。我們可以通過以下c語言 讀取到記憶體中實際是如何儲存這些數字的。int main 首先解釋為什麼是從 p 3 從大到小逐個輸出 這是因為我們生活中用的電腦都是以小端模式來儲存資料的,即資料的高位元組儲存在記憶體的高位址中,而資料...