少し反転を試みています。単純な実装は理解していますが、パフォーマンスのために、ルックアップ テーブルを作成し、そのテーブルを使用してビット反転を見つけることでビットを反転する必要があります。したがって、私のプログラムはルックアップ テーブルを作成します。ビットサイズ N の場合、テーブルを使用して、指定されたビットのビット反転を見つけます。
たとえば、bitSize = 9 で num = 6 (00000110) の場合
reverse(num,bitSize) は 11000000 である 192 を返します
int lookup(int num, int bitSize)
{
return table[bitSize][num]; // == reverse(num,bitSize);
}
これはルックアップ関数がどのように見えるかだと思います.テーブルを構築することは可能だと言われましたが、方法がわかりません.誰かがこのテーブルを構築する方法を説明できますか?
32 ビットだけでなく、指定されたbitSizeに対してこのテーブルを構築する方法を探していることを明確にしたいだけです。 .html#BitReverseTable
ご協力ありがとうございました、
編集: どちらのソリューションも機能しますが、j_random_hacker のメモリ最適化のおかげで、kmkaplan のソリューションの方が効率的です。