資料在記憶體中的儲存

2021-10-03 06:08:38 字數 1127 閱讀 5573

1.大端序和小端序

資料在記憶體中儲存的位元組順序不同,其中大端序是符合平時的習慣,將資料的高位元組部分儲存於低位址,將低位元組部分儲存於高位址中.如0x11223344在記憶體中的實際儲存情況是從某個位址開始為:11 22 33 44.而小端序則相反.

如何判斷是大端序儲存還是小端序儲存?
可以根據大小端序儲存的區別,將乙個實際資料存入記憶體中,如a = 0x11223344,通過檢視在記憶體中變數a起始的第乙個位元組的內容是11(大端序),還是44(小端序)來判斷.可以通過將int指標強轉成char指標,進一步獲取第乙個位元組的內容.

int a =

0x11223344

;int

*p =

&a;char

*p2 =

(char

*)p;

printf

("%x\n"

,*p2)

;//輸出結果為44(為小端序儲存)

2.整數型別的資料在記憶體中的儲存

在記憶體中,資料的儲存為補碼形式。其中,分為無符號整數和有符號整數。無符號整數表示非負數,直接儲存其十六進製制形式。而有符號整數需要將最高位作為符號位(0正1負)。

3.整數的型別轉換

整數在作表示數的範圍大的型別向小範圍的型別轉化時,採取的是截斷的方法。在作小範圍向大範圍的型別轉換是採取的是「高位補符號位的辦法」,因此在型別轉換中可能導致資料的大小發生變化。

char a1 =-1

;signed

char b1 =-1

;unsigned

char c1 =-1

;printf

("a1 = %d,b1 = %d,c1 = %d\n"

, a1, b1, c1)

;//輸出結果為 -1 -1 255

char a2 =

-128

;printf

("%u\n"

, a2)

;//輸出為4294967168

char a3 =

128;

printf

("%u\n"

, a3)

;//輸出4294967168

資料在記憶體中的儲存

身為乙個天天處理資料的人,不得不說資料在記憶體中的儲存是必須要知道的問題。首先,資料在記憶體中的儲存涉及到作用域,儲存位置等方面的問題。根據資料的作用域,可將資料劃分為區域性變數和全域性變數 區域性變數的作用域為從定義開始到函式執行結束 全域性變數的作用域從程式開始到程式結束。計算機的記憶體分配可以...

資料在記憶體中的儲存

大端,把乙個數字高位位元組序的內容儲存到低位址,低位位元組序內容儲存到高位址處 小端,把乙個數字高位位元組序的內容儲存到高位址,低位位元組序內容儲存到低位址處 判斷乙個機器是大端還是小端?指標判斷 int checksys 聯合體 共用體 union un int main 這裡首先需要知道的是,例...

資料在記憶體中的儲存

我們都知道在計算機中資料型別都有 char 1 short 2 int 4 long 4 8 float 4 double 8 等內建型別,以及他們所佔的空間大小。型別的意義 1.使用這個型別開闢記憶體空間的大小 大小決定使用範圍 2.如何看待記憶體空間的視角。型別歸類 整形家族 char unsi...