リンクhttp://pvtridvs.net/pool/bithacks.html#BitReverseObviousを見て、ここにコードを投稿しました。
unsigned int v; // reverse the bits in this
unsigned int t = v; // t will have the reversed bits of v
int i;
for (i = sizeof(v) * 8 - 1; i; i--)
{
t <<= 1;
v >>= 1;
t |= v & 1;
}
この見た目がシンプルなアルゴリズムが機能する理由を誰かが少し説明しますか?私は紙でいくつかの最も単純な例、たとえば4ビット0011などをテストしましたが、それは機能しますが、これらの3行のシフトとビット単位の演算がなぜそれを達成できるのか理解できません。