字节序也适用于位顺序吗?

时间:2014-08-20 10:08:57

标签: c endianness

我在这里没有找到具体的问题,如果这是重复的,请指出给我,我会删除它。

真的,字节序与顺序有什么关系?

This似乎暗示答案是否定的,而其他来源(我现在未能找到一个,但肯定我前段时间读过一些文章)暗示字节顺序是的顺序字节和位

更具体一点:在Big Endian架构中,MSB首先在任何字节内,也是MSb优先?相反,在Little Endian系统中,LSB是第一个,LSb也是第一个?

最后编辑:我发现this表示“位顺序通常遵循与给定计算机系统的字节顺序相同的字节顺序

7 个答案:

答案 0 :(得分:5)

其他回复并不完全准确。是的,内存是字节可寻址的,因此通常字节序会停止。但是,可寻址性并不是创建定义良好的字节序的唯一方法。

在C中,您可以定义位字段。位字段具有特定的布局;例如,第一个位字段,如果一个位,可以存储在msb或lsb中,并且以大端方式跨字节边界包装位字段与以小端方式这样做非常不同。因此,如果您定义位字段,则可能会有位字节序。

但是这些安排如何与编译器有关,而不是架构,至少作为一种规则。

答案 1 :(得分:3)

不,只是因为你不能单独解决比特问题。

答案 2 :(得分:3)

字节顺序仅适用于字节顺序。不是为了比特顺序。位顺序保持不变。

为什么?

内存是字节可添加的。这只是一种说法,每个地址存储一个字节。所以你可以改变字节的顺序,而不是内存中的位。

当你想要将一个大的值(例如一个单词)分成几个小的时候,字节顺序才有意义。您必须决定将订单放入内存中。

当您分解多字节数量并尝试将字节存储在连续的内存位置时,字节顺序才有意义。但是如果你接受一个注册,那就没有意义了。寄存器只是32位数量(取决于您的处理器/控制器),并且字节顺序不适用于它。

位顺序通常遵循与给定计算机系统的字节顺序相同的字节顺序 - 它是True

了解更多信息Endianness

答案 3 :(得分:2)

在现代计算中,字节顺序仅适用于字节排序,而不适用于位。

答案 4 :(得分:2)

Little-endian CPU通常使用" LSB 0"位编号,但是在大端机器中可以看到两种位编号约定。一些架构如SPARC和Motorola 68000使用" LSB 0"位编号,而S / 390,PowerPC和PA-RISC使用" MSB 0"。[2]

请参阅

http://en.wikipedia.org/wiki/Bit_numbering

http://en.wikipedia.org/wiki/Most_significant_bit

答案 5 :(得分:0)

字节顺序基于字节而不是位。比特不可寻址。

答案 6 :(得分:0)

回顾几年前我问过的这个问题,今天我可以添加一个部分响应,其中有一个比特字节序存在并且很重要的例子:在通信协议中。当在比特流中按下八位字节时,任何协议规范都需要定义首先发送哪个比特。