ビット反転

といっても、NOT演算ではなくてビットオーダーの入れ替えの話。
1バイト限定で良いので何かマクロ化できるくらい簡単なのは無いだろうか。

半日ほど悩んだけど、あまり簡単なコードが思いつかない。

  unsigned char breverse(unsigned char data)
  {
    data = data >> 4 | data << 4;
    data = (data  & 0xCC) >> 2 | (data & 0x33) << 2;
    data = (data & 0xAA) >> 1 | (data & 0x55) << 1;
    
    return data;
  }

力技でやると上みたいな感じだけど、スマートではない。。。ふむぅ。