主机字节序


字节序不仅仅是在字符存储中的概念、在内存中、网络传输中也存在字节序的概念。

1 主机字节序和CPU

不同架构的处理器,支持不同的字节序,有些是大端、有些是小端、有些是双端。
比如: X86–>小端 PowerPC–>大端 ARM–>双端
注:双端意味着我们可以二选一。


2 主机字节序和操作系统

实际的情况是,一旦选择了特定的操作系统,那么字节序也就固定下来了。Android操作系统、IOS操作系统、windows操作系统,它们都只能运行在小端模式下。所以,在我们选定了操作系统的同时,字节序也就随之固定了下来。由于这里所讲的字节序是和计算机平台相关的,所以,我们也称之为主机字节序。


3 主机字节序决定了什么

主机字节序决定了一个多字节数据,在内存中的排列方式。

int a = 0x12345678;

大端(BE): 从高字节开始存储(高字节存到低地址内存)
小端(LE): 从低字节开始存储(低字节存到低地址内存)


4 主机字节序对我们有影响吗

从程序运行的角度来说,主机字节序对我们是没有影响的,怎么理解呢?

  • 计算机按照大端法加载数据到内存,同时它也将按照大端法来解析内存中的数据。
  • 计算机按照小端法加载数据到内存,同时它也将按照小端法来解析内存中的数据。

主要在如下两个方面会有点影响:

  1. 当我们需要查看程序的机器指令时:
    LE平台 --> mov ax,0x0102 --> A1 02 01
    –> 在LE平台上,机器指令中的数据是实际数据的反序

  2. 网络编程时 --> 网络字节序(大端)–> 它与平台无关,是为了解决网络传输问题所制定的一个规则。


5 为什么不统一主机字节序

主机字节序的选择,是一种二选一的情况,选择了一方,就必然丢了另一方。而到底选择哪种主机字节序,是所有硬件厂商需要考虑的问题,这不是我们能够决定的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值