程式設計測試計算機儲存的大小端模式
大端模式:低位位元組存在高地址上,高位位元組存在低地址上
小端模式:高位位元組存在高地址上,低位位元組存在低地址上
例如對於0x11223344儲存如下
用union來測試機器的大小端模式
#include <stdio.h>
// 共用體中很重要的一點:a和b都是從u1的低地址開始的。
// 假設u1所在的4位元組地址分別是:0、1、2、3的話,那麼a自然就是0、1、2、3;
// b所在的地址是0而不是3,因為b是char型.
//由於int佔4個位元組,所以1其實就是0x00000001。如果是小端模式在四個位元組的記憶體中放的順序是01000000,若是大端 模式存 放順序為00000001, 因此如果是小端模式則返回1,大端模式則返回0
union myunion
{
int a;
char b;
};
int is_little_endian(void)
{
union myunion u1;
u1.a = 1;
return u1.b;
}
int main(void)
{
int i = is_little_endian();
if (i == 1)
{
printf(“小端模式\n”);
}
else
{
printf(“大端模式\n”);
}
return 0;
}
指標方式來測試機器的大小端
int is_little_endian2(void)
{
int a = 1;
char b = *((char *)(&a)); // 指標方式其實就是共用體的本質
return b;
}
int main(void)
{
int i = is_little_endian2();
if (i == 1)
{
printf(“小端模式\n”);
}
else
{
printf(“大端模式\n”);
}
return 0;
}