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

来源:互联网 发布:非诚勿扰程序员死亡 编辑:程序博客网 时间:2024/06/08 08:25

一、计算机字节序

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

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

二、如何用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;//小端elsereturn 0;//大端 }

分析:

由于共用体的特征是

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

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

(2)用char* 取地址

代码块:

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

分析:

a是四个字节

用char* 来取一个字节的地址

判断1,0来达到效果

 

 运行结果与小结

通过内存来检测大小端

 

通过调用内存,这台计算机是以小端存储的

 

 

运行结果:

 

 

1 0
原创粉丝点击