大小端 Big-Endian 与 Little-Endian

 

应该说没做底层开发(硬件或驱动)的人很可能不会彻底理解大小端的概念,大小端不是简单的一句“大端在前”还是“小端在前”能够概括的问题。在cpu, 内存, 操作系统, 编译选项, 文件,网络传输中均有大小端的概念,这些东西加在一起,就很容易把人搞晕。我自己就晕过很久。

 

为方便说明,再做一些定义:

(1) 内存

可以存储若干个单元数据的物理设备,每个单元存储1个字节,每个单元有一个地址,其地址线程增长。为方便说明,假设内存地址从 0000:0000 一直增加到FFFF:FFFF。

用一个带箭头的直线表示地址的增长方向,例如

-------------------------->

表示左边的数据处于低地址,右边的数据处于高地址。

 

(2) U32整型

对于unsigned int的变量,计算机是以32bits存储的,即连续的4个字节。比如说,对一个值为0x11223344的整数,在内存中的排列方式可能为:

-------------------------->

11  22  33  44 (大端)

也可能为

44  33  22  11 (小端)

 

从CPU说起

     在有了上述定义之后,开始讲大小端的起源。这得从CPU说起,我们知道CPU要从内存中加载程序数据来运行,CPU要对数字进行运算。那么,C

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿发你好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值