1個位元組在記憶體儲存沒有爭議,當多個位元組在記憶體中儲存時,就有了不同的意見,目前,主要有2個方式:
看圖:小端位元組序:低位元組存於記憶體低位址;高位元組存於記憶體高位址。如乙個long型資料0x12345678,以位元組為最小單位。
0x0029f458 0x78
0x0029f459 0x56
0x0029f45a 0x34
0x0029f45b 0x12
大端位元組序:高位元組存於記憶體低位址;低位元組存於記憶體高位址。
0x0029f458 0x12
0x0029f459 0x34
0x0029f45a 0x56
0x0029f45b 0x78
intel的cpu都是用的小端模式。
在linux下可以用巨集直接檢視:
printf("little endian:%d\n
",__little_endian);//
in stdlib.h
printf("
big endian:%d\n
",__big_endian);
printf(
"mine:%d\n
",__byte_order);
還可以在gdb中直接檢視變數的二進位製碼。
位元組順序 小端和大端之爭
1個位元組在記憶體儲存沒有爭議,當多個位元組在記憶體中儲存時,就有了不同的意見,目前,主要有2個方式 看圖 小端位元組序 低位元組存於記憶體低位址 高位元組存於記憶體高位址。如乙個long型資料0x12345678,以位元組為最小單位。0x0029f458 0x78 0x0029f459 0x56 ...
位元組序 大端和小端
長久以來,位元組序的問題一直困擾我,每次搞明白之後隔一段時間又區分不出了,特此記錄,以便使用時查閱。對於跨位元組的象的儲存,重要的有2點 1 物件的位址 2 儲存器中對於物件中位元組的排列 其中的第二點,由於位元組排列的順序不同,引出了位元組序的問題,即在不同裝置中對於儲存的位元組順序的不同,造成的...
大端和小端位元組序
關於位元組序 大端法 小端法 的定義 也可以說 小端法 little endian 就是低位位元組排放在記憶體的低位址端即該值的起始位址,高位位元組排放在記憶體的高位址端。大端法 big endian 就是高位位元組排放在記憶體的低位址端即該值的起始位址,低位位元組排放在記憶體的高位址端。舉個簡單的...