C語言筆記 資料的儲存

2021-10-10 18:21:57 字數 2879 閱讀 8334

常見型別:

char 字元型

short 短整型

int 整型

long 長整型

long long 長長整型

float 單精度浮點型

double 雙精度浮點型

struct 結構體型別

enum 列舉型別

union 聯合型別

void 空型別

原碼、反碼、補碼

對於正數來說:

原碼、反碼、補碼都是一樣的(符號位為0)

對於負數來說:

原碼:二進位制數(符號位為1 )

反碼:原碼除符號位外,其餘位次按位取反

補碼:反碼+1

如:int -5

原碼:1 0101

反碼:1 1010

補碼:1 1011

在計算機系統中,數值一律用補碼來表示和儲存。

原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。

我們可以看到a,b在記憶體中儲存的形式都是以補碼的形式,但仔細看會發現,在實際生活中,a的16進製制與記憶體中儲存的順序不同,這就是由於大端小端的不同而產生的順序不同。

大端小端:

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

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

例: int a=1

0x:大端:| 00 | 00 | 00 | 01 |

小端 :| 01 | 00 | 00 | 00 |

不論是大端還是小端,傳輸到網路上的順序都為轉換後的順序,即網路位元組序——大端,有其相應的函式進行轉化。

判斷當前機器的位元組序:

#include

#include

bool check_mode()

intmain()

練習1:輸出結果為?

#include

#include

//32位小字節序處理器

void

main()

*s,a;

s =&a; s->i[0]

=0x39

; s->i[1]

=0x38

;printf

("%x\n"

, a.k)

;}

練習2:

#include

intmain()

結果:4294967168 (無符號整型 1111 1111 1111 1111 1111 1111 1000 0000)

練習3:

#include

void

main()

}

結果:迴圈輸出

常見浮點型別:float 、double 、long double。

根據國際標準ieee(電氣和電子工程協會) 754,任意乙個二進位制浮點數v可以表示成下面的形式:

例如:float f = 10.125;

1010.001 --> 1.010001

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

s=0 , m=1.010001 , e=3

單精度浮點數儲存(32):

雙精度浮點數儲存(64):

對於上述例子中 f=10.125

如圖所示:

若e為8位,它的取值範圍為0~ 255;如果e為11位,它的取值範圍為0~2047。但是,我們知道,科學計數法中的e是可以出現負數的,所以ieee754規定,存入記憶體時e的真實值必須再加上乙個中間數,對於8位的e,這個中間數是127;對於11位的e,這個中間數是1023。

因此,對於f來說,s=0,e=3 +127=130–> 1000 0010 ,m補齊32位。

練習:

float f = 12.5;

12.5—> 1100.1—>1.1001

s=0;

e=3;

m=1.1001;

0 1000 0010 1001 0000 0000 0000 0000 000

即記憶體中儲存形式為:41 48 00 00

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

資料型別詳細介紹 char 字元資料型別 short 短整型 int 整型 long 長整型 longlong 更長的整型 float 單精度浮點數 double 雙精度浮點數 型別的意義 1 使用型別開闢記憶體空間的大小 大小決定了使用範圍 2 如何看待記憶體空間的視角。型別的基本歸類 整型家族 ...

C語言筆記 陣列

筆記內容為自學郝斌老師c語言課程時所作 如果對於基礎知識點有遺忘可以借鑑下 遼寧工業大學 電子202 宋家盛 如有錯誤,可通過jff 16 163.com聯絡 陣列 陣列型別 陣列名 元素個數 例如 int a 2 元素表示 a 0 1 a 2 2 即a i 表示第i 1個元素 為什麼使用陣列?1....

HIVE學習筆記 資料儲存

基於hdfs 沒有專門的資料儲存格式 儲存結構主要包括 資料庫 檔案 表 檢視 可以直接載入文字檔案 txt csv等 建立表時,指定hive資料的列分隔符與行分隔符 表 內部表 分割槽表 外部表 桶表 內部表 與資料庫中的tale在概念上類似 每乙個table在hive中都有乙個相應的目錄儲存資料...