-1

我试着:

  1. 将一组 8 个整数(均为 0 或 1)转换为一个字节
  2. 反转该字节的位顺序
  3. 打印该字节的值(以什么格式?)(我可以猜到,直到我在这里得到它)

另外,我不允许使用 STL 来解决这个问题。

4

2 回答 2

1

因此,您想要反转字节中的位。也就是说,位应该这样移动:

from: 7 6 5 4 3 2 1 0
to:   0 1 2 3 4 5 6 7

这段代码会做的很不优雅——如果你搜索的话,你会找到更好的算法。你能看到它是如何工作的吗?

uint8_t reverse_bits(uint8_t byte)
{
    return ((byte & 0x01) << 7)
          |((byte & 0x02) << 5)
          |((byte & 0x04) << 3)
          |((byte & 0x08) << 1)
          |((byte & 0x10) >> 1)
          |((byte & 0x20) >> 3)
          |((byte & 0x40) >> 5)
          |((byte & 0x80) >> 7);
}
于 2013-03-10T00:03:50.253 回答
-1

一种简单的方法是屏蔽其余位,正如您在读取单个位的方式中看到的那样。

于 2013-03-09T23:36:27.117 回答