08/07/06 08:22:25
>>44
じゃ古典的な実装のひとつでも覚えようか。
ちなみに4~5行目はBSWAPがあれば一発だね。
i = ((i&0x55555555)<<1) | ((i>>1)&0x55555555);
i = ((i&0x33333333)<<2) | ((i>>2)&0x33333333);
i = ((i&0x0F0F0F0F)<<4) | ((i>>4)&0x0F0F0F0F);
i = ((i&0x00FF00FF)<<8) | ((i>>8)&0x00FF00FF);
i = i>>16 | i<<16;
ま、これが最善とは限らないがね。
ちなみに他に、ビットスワップにXORを使う実装があるが
スーパースカラと相性よくない気がするので俺はこっちが好き
#組み込み爺さんは放置推奨。かまうあなたも組み込みです。