私がしようとしていること:
- すべて値が0または1の8つの整数のグループを1バイトに変換します
- そのバイトのビット順序を逆にします
- そのバイトの値を(どの形式で?)出力します(ここに表示されるまで推測できます)
また、この問題にSTLを使用することは許可されていません。
したがって、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);
}
簡単な方法は、個々のビットを読み取る方法でわかるように、残りのビットをマスクすることです。