0

我已经很久没有处理过针对硬件设备的编程了,并且几乎忘记了所有的基础知识。

我有一个我应该在一个字节中发送的规范,每个位都是从最高有效位(bit7)到最低有效位(bit 0)定义的。我如何构建这个字节?从 MSB 到 LSB,反之亦然?

4

3 回答 3

6

如果这些位被“打包”(通常是这样),那么位的顺序是本机顺序,0 是 LSB,7 是 MSB。位通常不是一个接一个地发送,而是作为字节发送(通常超过一个字节......)。

根据wikipedia,位排序有时可以从 7->0 开始,但这可能是极少数情况。

于 2009-10-08T07:07:34.647 回答
2

如果您要同时写入整个字节,即进行并行传输而不是串行传输,则位的顺序无关紧要。

如果传输串行的,那么您必须找出设备期望位的顺序,从外部无法分辨。

要从八位组装一个字节,只需使用按位或“添加”位,一次一个:

byte value = 0;

value |= (1 << n);  // 'n' is the index, with 0 as the LSB, of the bit to set.
于 2009-10-08T06:56:10.113 回答
1

如果规范说 MSB,则构建它 MSB。否则,如果规范说 LSB,则构建它 LSB。否则,请询问更多信息。

于 2009-10-08T06:53:14.253 回答