単一の乗算でビットを抽出する
別の質問への回答で使用されている興味深いテクニックを見て、少しよく理解したいと思います。 符号なし64ビット整数が与えられ、次のビットに関心があります。 1.......2.......3.......4.......5.......6.......7.......8....... 具体的には、次のように上位8つの位置に移動します。 12345678........................................................ で示されるビットの値は.関係ありません。それらを保持する必要はありません。 溶液は、不要なビットをマスクし、によって結果を乗算することでした0x2040810204081。結局のところ、これでうまくいきます。 この方法は一般的ですか?この手法を使用してビットのサブセットを抽出できますか?そうでない場合、方法が特定のビットのセットに対して機能するかどうかをどのようにして理解しますか? 最後に、与えられたビットを抽出するために(a?)正しい乗数をどのように見つけますか?