題目
判斷當前系統是大端對齊還是小端對齊
解析
首先需要明白什麼是大端對齊,小端對齊。
- Little-Endian就是數字的低位放內存的低地址端,高位放在內存的高地址端。(爲了方便記憶, 我都稱小端對齊纔是真對齊, 因爲小對小, 大對大)
- Big-Endian就是數字的高位放在內存的低地址端,低位放在內存的高地址端。
舉一個例子,比如數字int a = 0x12 34 56 78在內存中的表示形式爲:
1)大端模式:
2)小端模式:
大端模式和字符串的存儲模式有一拼
代碼實現
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a = 0x12345678;
printf("%#X\n", *((char *)&a));
if (*((char *)&a) == 0x78) {
printf("little end\n");
}
else {
printf("Big end\n");
}
return 0;
}