大端模式小端模式
2016-04-13 20:14
281 查看
做嵌入式开发怎么能不懂什么是大端模式小端模式
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/sleep.gif)
大端模式Big-Endian:就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
小端模式Little-Endian:就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
看看例子才能明白
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/shy.gif)
16bit宽数0x1234,小端模式在内存中的存放方式:
16bit宽数0x1234,大端模式在内存中的存放方式:
32bit宽数0x12345678,小端模式在内存中的存放方式:
32bit宽数0x12345678,大端模式在内存中的存放方式:
为什么会有大小端之分:
是因为计算机系统中是以字节为单位,每个内存单元存放一个字节,就是8bit,但是C语言中除了8bit的char以外,还有16bit的short,32bit的long等数据类型,需要将数据进行拆分存放在内存单元中,因此存在大小端之分。
一般操作系统都是工作在小端模式,通讯协议、网络字节序是大端的。
优缺点:
小端模式 :强制转换数据不需要调整字节内容。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/sleep.gif)
大端模式Big-Endian:就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
小端模式Little-Endian:就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
看看例子才能明白
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/shy.gif)
16bit宽数0x1234,小端模式在内存中的存放方式:
内存地址 | 0x4000 | 0x4001 |
存放内容 | 0x34 | 0x12 |
内存地址 | 0x4000 | 0x4001 |
存放内容 | 0x12 | 0x34 |
内存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
存放内容 | 0x78 | 0x56 | 0x34 | 0x12 |
内存地址 | 0x4000 | 0x4001 | 0x4002 | 0x4003 |
存放内容 | 0x12 | 0x34 | 0x56 | 0x78 |
是因为计算机系统中是以字节为单位,每个内存单元存放一个字节,就是8bit,但是C语言中除了8bit的char以外,还有16bit的short,32bit的long等数据类型,需要将数据进行拆分存放在内存单元中,因此存在大小端之分。
一般操作系统都是工作在小端模式,通讯协议、网络字节序是大端的。
优缺点:
小端模式 :强制转换数据不需要调整字节内容。
大端模式 :符号位的判定固定为第一个字节,容易判断正负。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 我是运营,我没有假期
- 如何写好 C main 函数
- 使用 Libki 来管理公共用户访问计算机
- 微型计算机的始祖:Altair 8800
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制
- IE7降低内存和降低CPU的几个技巧
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- 修复mysql数据库
- 如何高效的使用内存
- DOS下内存的配置
- Lua和C语言的交互详解
- XP/win2003下发现1G的内存比512M还慢的解决方法
- 浅析SQL数据操作语句
- SQLServer 数据导入导出的几种方法小结
- 简述MySQL分片中快速数据迁移
- MySQL数据备份之mysqldump的使用详解
- PowerShell实现动态获取当前脚本运行时消耗的内存