面试说的字节序大小端你懂吗
应届生面试常考大小端,所以本篇来说说大小端内容
我们知道ARM处理器对于数据的存放在内存上会有差异,而这些差异就是我们常常说的大端存储模式和小端存储模式。比如一个16位short类型变量X在内存中的地址为0x0010,X的值为0x1122,所有CPU看到的字节序都是0x11是高字节序,0x22是低字节序。对于大端模式CPU下,就会将0x11数据放在内存的低地址上面,0x22放在内存的高地址上面。对于小端模式CPU下,就会将0x11数据放在内存低地址,0x22数据放在内存高地址。很多ARM处理器都是小端模式,不过也有ARM处理器是大端模式下,具体还要看CPU手册。大小端模式在处理器访问内存时用于描述寄存器的字节顺序和内存中的字节时用于描述寄存器的字节顺序和内存中的字节顺序之间的关系。
大端模式是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
32位CPU在大端模式下,0x12345678在内存中的摆放位置:
低地址 ---> 高地址0000 0100: 1234 5678 0000 0000 0000 0000 0000 00000000 0110: 0000 0000 0000 0000 0000 0000 0000 0000
12是高字节序,78是低字节序,12是在低地址上,78是在高地址上,所以大端模式下的地址的增长顺序与值的增长顺序相同。
小端模式下,0x12345678在内存中的摆放位置:
低地址 ---> 高地址0000 0100: 7856 3412 0000 0000 0000 0000 0000 00000000 0110: 0000 0000 0000 0000 0000 0000 0000 0000
12是高字节序,78是低字节序,12是在高地址上,78是在低地址上,所以小端模式下的地址的增长顺序与值的增长顺序相反。
从上面大小端模式的内存视图可知,同样是读取0x1234 5678,但是该值在内存中的布局不一样。
在Linux操作系统中,用这个
readelf -a
命令加一个可执行文件可以查看大小端的情况
编辑
切换为居中
添加图片注释,不超过 140 字(可选)
联合体的存放顺序是所有成员都从低地址开始存放,利用该特性可以轻松判断CPU对内存采用大端模式还是小端模式读写。
#include<stdio.h> union test{ int a; //占4个字节 char b[4]; //占一个字节 }t = {0x12345678};//还是拿0x12345678为例 int main(){ int i = 0; for(i = 0 ; i < 4 ; i++) { printf("%x
",t.b[i]); } return 0;}
编译得到
编辑
添加图片注释,不超过 140 字(可选)
先打印出来的低地址的值0x78,说明低地址存放低字节序内容是小端模式。反之是大端。
相信这里大家应该懂了大小端原理了吧。觉得有用,点赞+关注
举报/反馈
上一篇:孩子的数学怎么能提高?这些方法你需要知道!
下一篇:英语夏令营,通过思维导图故事记单词,激发学生的想象力和创造力
最近更新学前教育
- 河南41个博士后团队将出征第二届全国博士后创新创业大赛总决赛
- 广西:依托“硕师计划”让高素质教师走向农村学校
- 数字工匠不足,育人短板怎么补?
- 闵行这个“服务圈”,已为200多青年找到心仪工作!
- 海大99周年校庆专属头像上线!
- 江西有哪些自学考试学习形式?
- 北中医房山医院:相约地坛共赴中医药文化盛会,走进文化宣传周共促中医药文化素养
- 军自考有哪些专业?
- 重要提醒!湖北省10月高等教育自考考前须知
- 新丝路幼儿园:九九重阳暖相融 孝亲敬老情意浓
- 7天搞定托福作文的技巧
- 躬耕教坛,强国有我!上音“大先生”荣登 “上海市教育功臣”群像展
- 自考需要去学校上课吗?
- 助推重大项目建设廉洁高效
- 青海省玉树藏族自治州:深化河湖长制守护“中华水塔” 力保“一江清水向东流”
- “国际角膜塑形学会亚洲分会(IAOA)基础课程培训班”首次在渝开课!
- 豆神教育窦昕老师不断加码大语文布局,推动文化传承
- 九江家有电动车的快看!11月1日起实施
- 宝馨科技:重大经营与投资决策管理制度(2023年10月)
- 新托福独立写作满分
- 获评国家级优秀!海淀区人工智能产业集群蔚然成势!
- 喜迎妇女十三大|织密防护网,“她”权益法治屏障更坚实
- 晋州市和平小学组织观看“新时代好少年”直播活动
- 金融支点“撬动”科技创新 企业如何加快自主创新?
- 宋旦汉字艺术博物馆在湖南外国语职业学院开馆揭牌