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

Bog*_*dru 10 c endianness

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

那么,字节顺序与顺序有什么关系吗?

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

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

最后编辑:我发现这个说" 比特顺序通常遵循与给定计算机系统的字节顺序相同的字节顺序 "

Sat*_*ish 5

字节顺序仅适用于字节顺序。不适用于位顺序。位顺序保持不变。

为什么?

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

仅当您想要将一个大值(例如一个单词)分解为多个小值时,字节序才有意义。您必须决定将其放入内存的顺序。

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

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

欲了解更多信息,字节序


H W*_*ers 5

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

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

但是这些如何安排将更多地与编译器相关而不是架构,至少作为一项规则.


dor*_*ron 4

不,只是因为您无法单独寻址位。

  • 找到了。C11 (n1570) 6.7.2.1 p.11 _单元内位域的分配顺序(高位到低位或低位到高位)是实现定义的。_ 当然,以下情况你必须关心,虽然很少见,但确实存在。 (5认同)
  • 结构中的位域怎么样? (4认同)
  • 当在硬件级别(串行端口)工作时,位字节顺序相关..并且它被称为位字节顺序.. (3认同)
  • 即使您无法寻址位,但了解这些位仍然以某种模式排序(即,一个位被认为比其他位更重要)很有用。https://en.wikipedia.org/wiki/Bit_numbering (2认同)