大端 与 小端

内存布局大致如下:

 
 
  1. -----------------------最高内存地址0xffffffff
  2. 栈底
  3. 栈顶
  4. -----------------------
  5. NULL (空洞)
  6. -----------------------
  7. -----------------------
  8. 未初始 化的数据
  9. ----------------------- 统称数据段
  10. 初始化的数据
  11. -----------------------
  12. 文段(代码段)
  13. ----------------------- 最低内存地址 0x00000000

假如有一个4字节的数组 char[4] szBuf; 那么szBuf在内容中的分布如下:

 
 
  1. 栈底 (高地址)
  2. ----------
  3. szBuf[3]
  4. szBuf[2]
  5. szBuf[1]
  6. szBuf[0]
  7. ----------
  8. 栈顶 (低地址)

在十进制中我们都说靠左边的是高位,靠右边的是低位,在其他进制也是如此。
比如有一个16进制的数: 0x12345678,一共占用4个字节的内存空间,从左到右表示:高字节 --> 低字节,分别是:

0x12,0x34,0x56,0x78

在内存中的分布根据大小端的不同,顺序就相反:
大端:

 
 
  1. 栈底 (高地址)
  2. ---------------
  3. 0x78 -- 低位字节
  4. 0x56
  5. 0x34
  6. 0x12 -- 高位字节
  7. ---------------
  8. 栈顶 (低地址)

小端:

 
 
  1. 栈底 (高地址)
  2. ---------------
  3. 0x12 -- 高位字节
  4. 0x34
  5. 0x56
  6. 0x78 -- 低位字节
  7. --------------
  8. (低地址)

简单点来说:
大端:高字节存放在低地址。
小端:高字节存放在高地址。
怎么记住呢?可以联想 “负负得正” 来记忆,高高为小即高地址存放高字节为小端),这样以后就不怕忘记了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值