完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在计算机系统当中,数据的存储是以字节为单位的,每个地址单元当中都可以存放一个字节的数据,每个字节为8bit。在C语言中编译器为char型的数据分配了一个字节的存储空间,为long型的数据分配了4个字节的存储空间,为int型的数据分配了2个字节的存储空间(要看具体的编译器),这样当所定义的数据类型占用的存储空间大于一个字节时就需要用多个字节的空间来存储一个数据,即一个数据占用了多了地址单元,这样就存在着一个存储顺序的问题,即这几个字节在内存单元中是以什么样的顺序来存储的。
在ARM体系中通常采用的字节存储机制主要有两种:Big-Endian(大端模式)Little-Endian(小端模式)。Big-Endian是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。Little-Endian是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。 举一个例子,比如十六进制数字0x12345678在内存中的表示形式为: 1)大端模式: 低地址 -----------------> 高地址 0x12 | 0x34 | 0x56 | 0x78 2)小端模式: 低地址 ------------------> 高地址 0x78 | 0x56 | 0x34 | 0x12 在ARM体系结构中采用Big-Endian存储模式还是Little-Endian存储模式都各有利弊,比如在Little-Endian模式下强制转换数据不需要调整字节内容,而在Big-Endian模式下符号位的判定固定为第一个字节,与Little-Endian模式相比较更容易判断数据的正负。 在ARM体系中默认的存储格式为小端对齐,但ARM处理器还可以由硬件来选择是大端模式还是小端模式。 |
|
相关推荐
|
|
|
|
|
|
|
|
飞凌嵌入式ElfBoard ELF 1板卡-i2c与从设备通讯编程示例之开发板测试
1006 浏览 0 评论
ubuntu ping 开发板存在严重的丢包情况,请问该怎么解决?
2061 浏览 1 评论
12G-SDI高清视频开发案例,让4K视频采集更便捷!基于Xilinx MPSoC高性能平台
1822 浏览 0 评论
全志T507-H国产平台Ubuntu系统正式发布,让您的应用开发更便捷!
1264 浏览 0 评论
全志T507-H国产平台Ubuntu系统正式发布,让您的应用开发更便捷!
29 浏览 0 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 17:26 , Processed in 0.552737 second(s), Total 42, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号