大端字节序和小端字节序


title: 大端字节序和小端字节序


来源

《格列佛游记》中记载了两个征战的强国,你不会想到的是,他们打仗竟然和剥鸡蛋的姿势有关。

很多人认为,剥鸡蛋时应该打破鸡蛋较大的一端,这群人被称作“大端(Big endian)派”。可是当今皇帝的祖父小时候吃鸡蛋的时候碰巧将一个手指弄破了。所以,他的父亲(当时的皇帝)就下令剥鸡蛋必须打破鸡蛋较小的一端,违令者重罚,由此产生了“小端(Little endian)派”。这就是大端,小端的来源。

什么是大端和小端

计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。

大端法
最高有效字节在最前面的方式称为大端法,例如假设变量x类型为int型,位于地址0x100的地方,其16进制值为0x12345678,地址范围为0x100到0x103字节。

对于大端法的机器来说:

0x1000x1010x1020x103
12345678

由上图可见,地址从左向右增长,x的最高有效字节12在最前面存储。这正好和我们平时书写习惯一致,先书写最高有效字节,再依次写其余字节。

小端法
最低有效字节在最前面的方式成为小端法,这正好和大端法相反,仍然用大端法中举的例子说明:

0x1000x1010x1020x103
78563412
  • 大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
  • 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。

为什么有大端小端

可能很多人不理解,为什么要有大端和小端之分。

  1. 首先为什么会有大端,因为大端符合我们人类的阅读习惯,比如说我们习惯的从123456开始阅读,而不是654321.
  2. 既然人类的阅读习惯就是从大端开始,为什么还要有小端呢?因为计算器的电路会优先处理低位字节,采用小端效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。

只有读取的时候,才必须区分字节序,其他情况都不用考虑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值