【发布时间】:2010-04-14 07:08:14
【问题描述】:
我正在逐字节读取文件。
比如说我有这个字节:0x41 (0100 0001) 以十六进制表示。
现在,我想要这个字节的前三位,即 (010)。
我可以使用按位逻辑来提取前三位,但我的问题是前三位是否与机器的字节序无关。(即它们不能是 001)?
谢谢,
【问题讨论】:
-
位通常从右开始计算,因此 010 将是您示例中的最后三位。我之所以提到这一点,是因为我相信大多数关于位操作的文档都认为最低位——代表 1、2、4、...的位——是第一位。
-
字内的位顺序没有通用约定。在实践中,这取决于您使用它的目的。如果你在做多字算术,自然排序是 LSB 优先。但是,对于计算 TCP/IP 数据包的 CRC,MSB 优先更有意义。
标签: c bit-manipulation endianness