C/C++知识点:大端小端模式简单介绍及三种检测大小端存储的方法
Vivian 2018-06-19 来源 : 阅读 1227 评论 0

摘要:本文主要向大家介绍了C/C++知识点的大端小端模式简单介绍及三种检测大小端存储的方法,通过具体的实例让大家了解,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点的大端小端模式简单介绍及三种检测大小端存储的方法,通过具体的实例让大家了解,希望对大家学习C/C++知识点有所帮助。

大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端。

小端模式,是指数据的高字节保存在内存的高地址中,低位字节保存在在内存的低地址端。

比如 一个变量x的十六进制表示为 0x01 23 45 67,

如果是大端存储 则是这样存储的

 高地址--------->低地址 

       67 45 23 01    数据的高位 放在低地址 低位放在高地址

而小端模式 是这样

      01 23 45 67   数据的低位 放在低地址 高位放在高地址

 

大小端模式的检测(环境 win7  vs2008)

 

方法(1)利用利用共用体几个不同的变量共同占用一段内存的性质输出第一个字节

[cpp] view plain copy print?
1. #include <stdio.h>  
2.   
3. int check()  
4. {  
5.     union UN  
6.     {  
7.         char c;  
8.         int i;  
9.     }un;  
10.     un.i = 1;  
11.     return un.c;  
12. }  
13.   
14. int main(void)  
15. {  
16.     if(check()==1)  
17.         printf("小端模式存储!\n");  
18.     else  
19.         printf("大端模式存储!\n");  
20.     return 0;  
21. }

 

方法(2)

[cpp] view plain copy print?
1. #include <stdio.h>  
2. int check()  
3. {  
4.     int i = 1;  
5.     i = *(char*)&i;//取 i 的地址 强制类型转换后解引用  
6.     return i;  
7. }  
8. int main(void)  
9. {  
10.     if(check()==1)  
11.         printf("小端模式存储!\n");  
12.     else  
13.         printf("大端模式存储!\n");  
14.     return 0;  
15. }

 

方法(3)

[cpp] view plain copy print?
1. #include <stdio.h>  
2. int check()  
3. {  
4.     union UN  
5.     {  
6.         char a [4];  
7.         int i ;  
8.     } un ;  
9.     un .i = 1;  
10.         //02 是整数不够2位就补上0  x是以16进制输出  hhx 表示只输出两位  
11.     printf ("%02hhx %02hhx %02hhx %02hhx\n", un .a [0], un. a [1],un . a[2], un .a [3]);  
12.     return un . a[0];  
13. }  
14.   
15. int main(void)  
16. {  
17.     if(check()==1)  
18.         printf("小端模式存储!\n");  
19.     else  
20.         printf("大端模式存储!\n");  
21.     return 0;  
22. }

 

输出结果:
01 00 00 00
小端模式存储!

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @Vivian 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程