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...