LSb、MSb、大端、小端


LSb ( Least Significant bit ) -- 最低有效位

MSb ( Most Significant bit ) -- 最高有效位

首先它们不表示顺序,仅代表一个二进制数的两个bit位。

MSb代表对二进制数的值影响最大的那个bit,LSb代表对二进制数的值影响最小的那个bit。

按照人类阅读/书写习惯,MSb通常是二进制数最左边的那个bit,LSb是二进制数最右边的那个bit。

当我们需要逐bit处理这个二进制数时(比如数据封包),就会涉及到bit的顺序。

此时我们可以通过LSb和MSb来描述比特序,比如:LSb→MSb、MSb→LSb、LSb优先,MSb优先。

我们知道,计算机系统在存储数据时,通常是以字节为单位的,对于一个多字节的二进制数,该如何存储呢?

要解释这个问题,先引入另两个概念:LSB ( Least Significant Byte )、MSB ( Most Significant Byte )。注意区分bit与Byte。

可以认为包含LSb的字节就是LSB,包含MSb的字节就是MSB。比如 0x12345678,0x12就是MSB,0x78就是LSB。

将MSB存储在低地址,就叫大端模式。

将LSB存储在低地址,就叫小端模式。


还是前面那个数0x12345678,即(0001  0010  0011  0100  0101  0110  0111  1000)B

将其打包到一个二进制流,有多少种打包方式呢?答案是4种:

大端模式 + 字节内MSb优先:0001  0010  0011  0100  0101  0110  0111  1000(等价于整体MSb优先)

大端模式 + 字节内LSb优先:0100  1000  0010  1100  0110  1010  0001  1110

小端模式 + 字节内MSb优先:0111  1000  0101  0110  0011  0100  0001  0010 

小端模式 + 字节内LSb优先:0001  1110  0110  1010  0010  1100  0100  1000  (等价于整体LSb优先)

前面说到的都是二进制数,因为在计算机世界,所有的数或者说元数据都是以二进制(数)表示的。

还有一种比较特殊的数据,那就是字符串。它的字节序是固定的,所有的计算机系统都是将字符串左边的字符存在低地址,右边字符存在高地址。

所以字符串是没有大小端说法的,当然也可以理解为:其字节序是统一的小端。

不过按bit处理字符串时,需要指定字节内的比特序。如果未指定,最好按照人类阅读/书写习惯,使用MSb优先的顺序。


 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值