資料在記憶體中的儲存c語言

2021-10-10 11:22:59 字數 2653 閱讀 2136

基本內建型別

char

//字元資料型別

short

//短整型

int//整形

long

//長整型

long

long

//更長的整形

float

//單精度浮點數

double

//雙精度浮點數

使用這個型別開闢的記憶體空間大小(大小決定了適用範圍)。

如何看待記憶體空間的視角。

在32位平台下,任何指標型別都只佔4個位元組。

整形家族:

char

unsigned

char

signed

char

short

unsigned

short

[int

]signed

short

[int

]int

unsigned

intsigned

intlong

unsigned

long

[int

]signed

long

[int

]

浮點數家族:

float

double

構造型別:

陣列型別

結構體型別 struct

列舉型別 enum

聯合型別 union

指標型別

int

*pi;

char

*pc;

float

* pf;

void

* pv;

空型別:

void 表示空型別(無型別)

通常應用於函式的返回型別、函式的引數、指標型別》

整形在記憶體中的儲存:

乙個變數建立是要在記憶體中開闢空間的。空間的大小是根據不同的型別而決定的。

計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種方法均有符號位和數值位兩部分,符號位 0 表示正數, 符號位 1 表示負數,而數值位,三種表示方法各不相同。

原碼:直接將二進位制按照正負數的形式翻譯成二進位制就可以了。

反碼:將原碼的符號位不變,其他位依次按位取反就可以得到了。

補碼:反碼 +1 就得到補碼。

正數的原碼、反碼、補碼相同。

大端(儲存)模式,是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中;

小端(儲存)模式,是指資料的低位儲存在記憶體的低位址中,而資料的高位,,儲存在記憶體的高位址中。

為什麼有大端和小端:

根據國際標準ieee 754,任意乙個二進位制浮點數v可以表示成下面的形式:

· (-1)^s * m * 2^e。

· (-1)^s 表示符號位,當s == 0, v為正數;當s == 1, v為負數。

· m表示有效數字,大於等於1,小於2、

· 2^e表示指數字。

舉個例子:十進位制的5.0,轉化成二進位制就變成了101.0,用科學計數法表示就是 1.01 * 2^2 。那麼,按照上面v的格式,可以得出s = 0, m = 1.01,e = 2 。

如果是-5.0,s = 1, m = 1.01, e = 2 。
>2. ieee 754規定:對於32位浮點數,最高的1位是符號位s, 接著的8位是指數e,剩下的23位為有效數字m。

e和m的儲存方式也是ieee 754的規定,記住就好。

對於64位浮點數,最高的1位是符號位s,接著的11位是指數e,剩下的52位為有效數字m。

e的兩種特殊取值:

當e全為0的時候,即2的次方為0 - 127 為2^-127次方,所以,當s = 0時,乙個正數的2^-127次方,是乙個從數軸的右邊無線趨近於0的數字;而當s = 1時,乙個負數的2^-127次方是從數軸左邊無線趨近於0的數字。

所以當e全為0的時候,實際就表示的是±0,所以浮點數不可以在程式**現 與0去比較(浮點數 == 0),而是要跟一段範圍去比較。

當e全為1的時候(如果m全為0),即2的次方255 - 127 = 128,所以當s = 0時,表示1 * 2^128次方,當s = 1時表示-1*2^128次方。

所以當e全為1時,其實表示的就是這個浮點數的取值範圍。

C語言 資料在記憶體中的儲存

字元型資料 1.字元與字元 把字元的相對應的ascii碼 整數,對映關係見ascii碼表 放到儲存碼單元中,而這些ascii 值在計算機中同樣以二進位制補碼的形式存放的。2.字元變數 字元型資料的儲存空間和值的範圍 32位操作平台 型別位元組數 取值範圍 signed char 有符號字元數 1 2...

C語言 資料在記憶體中的儲存

得從整形在記憶體中的儲存說起 計算機中的有符號數有三種表示方法,即原碼 反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示 正 用1表示 負 而數值位三種表示方法各不相同。原碼直接將二進位制按照正負數的形式翻譯成二進位制就可以。反碼將原碼的符號位不變,其他位依次按位取反就可以得到了...

C語言 資料在記憶體中的儲存

char 字元資料型別 1個位元組 short 短整型 2個位元組 int 整型 4個位元組 long 長整型 4個位元組 long long 更長的整型 8個位元組 float 單精度浮點型 4個位元組 double 雙精度浮點型 8個位元組1,使用這個型別開闢記憶體空間的大小 2,如何看待記憶體...