大小端问题
来源:互联网 发布:网络公会白马义从 编辑:程序博客网 时间:2024/06/05 05:31
最近在刷题的过程中遇到好多关于大小端问题的题目
看得多了,有点把自己带入了一个思维误区,我可以很清楚的理解数据在大小端不同机器中的存储,可是在打印值时,越想越混乱,不知道该用怎样的语言来解释
在VS中验证,我用的是小端机器(在文章后面会有验证)
从这里可以看出78被存在低地址中
有两种方式可以验证机器是大端机器还是小端机器
(1)
联合体的内存大小为内部元素最大的内存,元素共用起始地址,且起始地址为低地址
c.ch只占联合体的一个字节的大小,也就是在i的最低地址处,打印结果为1,说明是小端机器
1在i中的位置为 0x 00 00 00 01 小端机器会将最低位存储在最低地址,转换为char打印时,只看到最低地址的一个字节打印结果为1
若是大端机器,则会将01存储在高地址,转换为char打印时,低地址此时存储的是00,所以会打印出0
(2)
例题:union X
{
int a;
struct
{
short b;
short c;
};
}x;
int main()
{
x.a = 0x20150810;
printf("%x,%x\n", x.b, x.c);
return 0;
}
在大端机器和小端机器下的输出分别是什么?
大端机器(可以说是按人的常规思维)
低地址 高地址
20 15 08 10
所以按short两个字节打印结果为:2015,810
小端机器
低地址 高地址
10 08 15 20
按short两个字节打印结果为: 810,2015
在我的vs下运行结果
前边已经验证过,我的机器为小端机器
- 存储大小端问题
- 大小端存储问题
- 大小端问题
- cpu大小端问题
- 大小端问题
- 大小端问题
- 大小端问题
- 大小端存储问题
- 大小端问题
- 大小端问题
- 大小端问题
- 大小端问题
- 大小端判断问题
- 存储大小端问题
- 大小端问题
- 大小端问题
- 大小端问题
- 小记:大小端问题!
- unity反馈消息到ios Unity与ios交互
- Gentoo下折腾emerge包管理器
- 【LeetCode】Detect Capital 解题报告
- Spring AOP 必导jar包
- laravel5.2 验证码
- 大小端问题
- Unity与ios交互
- Calendar日历+Date时间+SimpleDateFormat转换格式
- Xmind之鱼骨图绘制方法
- getopt解析函数
- 第一篇(Hay For Sale 购买干草)【动规】
- java 链式调用
- 【Shiro】SpringMVC+Shiro权限管理
- PAT乙级(Basic Level)真题 >锤子剪刀布