c - 字节顺序是否也适用于位顺序?

标签 c endianness

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

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

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

更具体地说:在 Big Endian 架构中,MSB 在前,在任何字节内,MSb 也是在前?相反,在 Little Endian 系统上,LSB 在前,那么 LSb 是否也在前?

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

最佳答案

其他回答并不完全准确。是的,内存是字节可寻址的,所以字节顺序通常就此止步。但可寻址性并不是创建明确定义的字节顺序的唯一方法。

在C 中,您可以定义位域。位域有特定的布局;例如,第一个位字段(如果是一个位)可以存储在 msb 或 lsb 中,并且以大端方式将位字段包装在字节边界上与以小端方式进行包装截然不同。因此,如果您定义位字段,则可能具有位字节序。

但这些如何安排与编译器有关,而不是与架构有关,至少通常是这样。

关于c - 字节顺序是否也适用于位顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402080/

相关文章:

c - 使用 objcopy 和将文件 xxding 到 c 源代码中的区别

c - 对一个过去的数组元素进行指针运算,然后取消引用,结果会是什么?

java - 测试 LITTLE_ENDIAN 和 BIG_ENDIAN 场景

endianness - 小端有符号整数

c - Linux 中 FreeBSD 的 be64enc 和其他 dec/enc 等效函数?

c - 将 "array of pointers"传递给函数

c - 自由字符**表上的错误

c++ - 为什么在 C/C++ 中使用 div 或 ldiv?

C、Little和Big Endian混淆

c - ntohs() 问题 : Write Integer in C socket