C、C++の最適化について語るスレ 3
■ このスレッドは過去ログ倉庫に格納されています
0058ヽ・´∀`・,,)っ━━━━━━━┓
2008/07/06(日) 08:22:25じゃ古典的な実装のひとつでも覚えようか。
ちなみに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を使う実装があるが
スーパースカラと相性よくない気がするので俺はこっちが好き
#組み込み爺さんは放置推奨。かまうあなたも組み込みです。
■ このスレッドは過去ログ倉庫に格納されています