【问题标题】:Most significant bit最高有效位
【发布时间】:2009-10-08 06:45:39
【问题描述】:

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

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

【问题讨论】:

  • 当您说“构建”时,您是什么意思? - 似乎您拥有所需的所有信息。
  • 试试吧……如果不行,倒序。最常见的是将位 0 ​​作为 lsb

标签: c# hardware bit


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    byte value = 0;
    
    value |= (1 << n);  // 'n' is the index, with 0 as the LSB, of the bit to set.
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 规范什么也没说。有的地方从 0 到 7 列出位,有的地方从 7 到 0。最常见的方式是什么?
      • 据此en.wikipedia.org/wiki/Most_significant_bit 两种方式都存在。根据我的经验,0 是 LSB。
      猜你喜欢
      • 2015-03-25
      • 2020-09-07
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多