中易网

笔试面试7 如何判断一个系统的存储方式是大端还是小端

答案:2  悬赏:20  
解决时间 2021-04-18 17:14
笔试面试7 如何判断一个系统的存储方式是大端还是小端
最佳答案
简单来说,从内存地址增加的方向来说,大端就是先存放高序字节,小端就是先存放低序字节。

例如:0x0102
-------->内存增加的方向------>
地址A------>地址A+1
大端:01 02
小端:02 01

判断方法是利用union的一个特性,那就是里面的变量共享一段内存。
可以定义一个union.
union Test{
short num;//2byte
char c[sizeof(num)];//2byte
} ;
然后存入一个0x0102或者其他数字到test.num中,因为共享内存的原因,可以访问c[1],c[2],查看里面的值来判断大小端。
一个实现是(参照unix网络编程中的一个例子):

[cpp] view plain copy print?
#include
#include
union Test{
short num;
char c[sizeof(short)];
};
int main()
{
union Test t;//C++ 直接声明为Test t即可
t.num=0x0102;
if(t.c[0]==1&&t.c[1]==2)
printf("大端!\n");
else if(t.c[0]==2&&t.c[1]==1)
printf("小端!\n");
else
printf("未知!\n");
getch();
return 0;

}
在Win7 32bit里面用DEV c++运行的结果为:

或者更简单的是存一个short值,然后取其地址。

[cpp] view plain copy print?
#include
#include
int main()
{
short int num=0x0201;
char *p=#

if(*p==0x02)
printf("大端!\n");
else if(*p==0x01)
printf("小端!\n");
else
printf("未知!\n");
getch();
return 0;

}
测试结果:
全部回答
支持一下感觉挺不错的
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
想找个女同胞一起CF 北方大区有来的吗?
多乐士色卡颜色有哪些 多乐士色卡相关介绍
常熟哪有卖打篮球穿的护腿(像韦德一样把腿全
请问你有空姐续集的后半部分吗?
华宇饭店在什么地方啊,我要过去处理事情
水管减压阀可以竖着装吗
小辛王村地址在哪,我要去那里办事
成都到都江堰怎么走
请问下现在还有战地之王的内测码吗?
河北,山东,山西旅游
杨村地址有知道的么?有点事想过去
网咖装修预算要多少?网吧装修需要注意哪些方
我想买辆中型卡车跑长途运输、不知道那种牌的
侵入性操作相关医院感染如何预防
前端问题:html页面上6位密码输入框是怎么写
推荐资讯
惨淡落幕、又会怎样?
梦见很多次曾经追过的那个女孩儿了!咋办
核桃酥最正宗的做法
牛尾汤可以同时放白萝卜胡萝卜?
在三角形ABC中,角C等于90度,角B等于15度,AB的
咨询下安心强化木地板价格高不高?
惠州哪有汽车音响改装店改套音响?价格一般是
梦见有人去世把人裱起来是什么意思?
如果想做个象淘宝那样的网站
德国永达商标特效前列通宝效果怎么样呢?
老爸很固执,如何跟他沟通。
求歌 歌词中有句你是我的眼睛,没有你我看不
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?