题目
判断当前系统是大端对齐还是小端对齐
解析
首先需要明白什么是大端对齐,小端对齐。
- 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;
}