我试着:
- 将一组 8 个整数(均为 0 或 1)转换为一个字节
- 反转该字节的位顺序
- 打印该字节的值(以什么格式?)(我可以猜到,直到我在这里得到它)
另外,我不允许使用 STL 来解决这个问题。
因此,您想要反转字节中的位。也就是说,位应该这样移动:
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);
}
一种简单的方法是屏蔽其余位,正如您在读取单个位的方式中看到的那样。