記憶體高低位儲存簡介

2021-06-19 13:34:01 字數 1097 閱讀 6978

不考慮資料符號位的情況下:

//判斷當前cpu是低位還是高位儲存

union

c; c.i = 0x12345678;

if( 0x12 == c.s[0] )

else

/*以0x12345678為例:

big endian

低位址 高位址

----------------------------------------->

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 12 | 34 | 56 | 78 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

little endian

低位址 高位址

----------------------------------------->

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 78 | 56 | 34 | 12 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

*/unsigned long lval = 0x12345678;

// 左移, 去掉前兩位,後面補0

cout << (lval << 8) << endl;

cout << 0x34567800 << endl;

// 右移, 去掉後兩位,前面補0

cout << (lval >> 8) << endl;

cout << 0x00123456 << endl;

//取lval的 0x0034

cout << 0x0034 << endl;

cout << ((lval<<8)>>24) << endl;

// 1. lval << 8 = 0x34567800

// 2. 0x34567800 >> 24 = 0x34 也就等於 0x0034

高低位交換

給出乙個小於2 32的正整數。這個數可以用乙個32位的二進位制數表示 不足32位用0補足 我們稱這個二進位制數的前16位為 高位 後16位為 低位 將它的高低位交換,我們可以得到乙個新的數。試問這個新的數是多少 用十進位制表示 例如,數1314520用二進位制表示為0000 0000 0001 01...

高低位交換

題目描述 輸入乙個無符號整數n unsigned int型別 n可以用乙個32位的二進位制數表示 不足32位用0補足 我們稱這個二進位制數的前16位為 高位 後16位為 低位 輸出將n的高位和低位交換後的值 用十進位制表示 例如 輸入1314520,它的二進位制表示為0000 0000 0001 0...

對大小端模式,記憶體位址高低位,暫存器高低位

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