您的位置:首页 > 编程语言 > C语言/C++

【C/C++】大端与小端

2016-07-23 12:08 274 查看

一、计算机字节序

小端字节序存储:低位存放着低地址,高位存放着高地址

大端字节序存储:低位存放着高地址,高位存放着低地址

二、如何用C语言来判断机器的大端与小端

定义一个整形变量a,并初始化为1

由于整型是4个字节

我们利用char取出第一个字节

判断该元素是0 还是1

如果为1,则为小端

否则为大端



三、两种方法

(1)共用体union

代码块:

int check_sys()
{
union UN
{
int a;
char b;
}un;
un.a = 1;
if(un.b == 1)
return 1;//小端
else
return 0;//大端
}

分析:

由于共用体的特征是

这种几个不同的变量共同占用一段内存的结构

用共用体可以轻松达到这个效果

(2)用char* 取地址

代码块:

int check_sys()
{
int a = 1;
char* p = (char* )&a;
if(*p == 1)
return 1;//小端
else
return 0;//大端
}

分析:

a是四个字节
用char* 来取一个字节的地址
判断1,0来达到效果
 

 运行结果与小结

通过内存来检测大小端
 


通过调用内存,这台计算机是以小端存储的
 
 
运行结果:



 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息