ベストアンサー1
これは動作するはずです:
unsigned char reverse(unsigned char b) {
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
return b;
}
まず、左の 4 ビットが右の 4 ビットと交換されます。次に、隣接するすべてのペアが交換され、最後に隣接するすべての単一ビットが交換されます。この結果、順序が逆になります。