大端模式和小端模式的再理解

2021-07-23 03:39:28 字數 978 閱讀 3735

首先看一段程式:

#include 

int main()

看輸出結果:

0x7fff52499ad8

// a

0x7fff52499ad4

// b

0x7fff52499ad0

// c

可以看到,在棧上分配的int資料,記憶體位址是往下增長的。

// 堆上儲存

int *pa = (int*)malloc(sizeof(int));

int *pb = (int*)malloc(sizeof(int));

int *pc = (int*)malloc(sizeof(int));

printf("%p\n",&pa);

printf("%p\n",&pb);

printf("%p\n",&pc);

結果發現輸出:

0x7fff5c5eeac8

// pa

0x7fff5c5eeac0

// pb

0x7fff5c5eeab8

// pc

因此,在本機(macos)測試下,堆、棧的分配都是位址遞減,和我想的不太一樣。。

所以只能說概念。

我們假設位址從左往右增長,或者從上往下看增長。不管怎樣,我們就帶著這樣的視角。

按照大端序的說法,大端序裡乙個字的高位位元組(左邊)存在記憶體的低位址處。所以,對於乙個數字0x12345678, 12是最高位的位元組,因此存在位址的最左邊,因為我們假定了位址從左往右增長,左邊位址最小。 這樣一次進行,所以大端序下看起來非常符合我們的直覺。

因此,稱之為:大自然!

小端序是反著來的,留待各位舉一反一吧。

其實是,這種只有兩種情況的,記住乙個的效率高且準確。

以上。

小端模式和大端模式 大端模式和小端模式

0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...

大端模式和小端模式

大端模式和小端模式 在c語言中除了8位的char型之外,還有16 位的short型,32 位的long型 要看具體的編譯器 對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然 存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。大端模...

大端模式和小端模式

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...