字节和位排序

问题描述 投票:0回答:1

我的机器使用little endian字节排序,这意味着最低有效字节存储在最低地址中,但是位排序呢,它也是little endian格式吗?

例如使用Ascii编码,我存储A和B,那么A将存储在最低地址,而b将存储在最高地址。

A = 0x41

B = 0x42

那么位排序呢,因为我使用的是little endian,这是否也意味着0x41和0x42将以little endian位排序格式存储?

computer-science endianness
1个回答
0
投票

是的,确实存在位排序和字节排序。在大多数情况下,它们都不重要。

仅当您以两种不同的方式查看一段内存时,字节顺序才重要。假设

int32
int8
在我的电脑上分别是 4 字节和 1 字节整数

int32 x = 0x12345678;
int8 y = *(int8 *)&x;

您将 0x12345678 存储到 4 字节位置,然后想知道其中一个字节的内容。字节序很重要。除非您正在编写尝试将数据结构序列化为字节的代码,否则您可能永远不需要这样做。在我编写的 99% 的代码中,低级字节序是无关紧要的。

同样,X86 指令有一条指令表示“提取位 x 到 y”,其中 x 和 y 被硬连线到指令中。对于这种情况,了解硬件如何对位进行排序非常重要。但是除非您使用汇编语言编写,否则您永远不需要知道机器的位顺序,并且您可能会编写移位和掩码代码来提取位,并希望编译器真的很好。

所以是的,存在位排序。但对于大多数程序员来说,这并不重要。

© www.soinside.com 2019 - 2024. All rights reserved.