面试题:请简述大端字节序与小端字节序的概念,设计一个程序来判断当前机器的字节序。
概念:大端字节序就是低位地址存放高位字节,高位地址存放低位字节,小端则与之相反。
例:0x 00 00 00 01
小端字节序:低字节放在低地址
01 00 00 00
低地址 高地址大端字节序:低字节放在高地址
00 00 00 01
低地址 高地址
代码实现:#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int num = 1;
if(*(char*)&num ==1)
{
printf("小端字节序\n");
}
else
{
printf("大端字节序\n");
}
return 0;
}
//联合体union的存放顺序是从低地址开始存放的
#include <stdio.h>
#include <iostream>
using namespace std;
union{
int 1 = 1;
char c[sizeof(int)];
}num;
int main()
{
if(num.c[0] == 0)
{
printf("小端字节序\n");
}
else
{
printf("大端字节序\n");
}
return 0;
}
#include <iostream>
using namespace std;
union A{
char c;
int a
}A;
int main()
{
A.a = 1;
if(A.c == 1)
{
cout<<"小端字节序"<<endl;
}
else
{
cout<<"大端字节序"<<endl;
}
return 0;
}