2 つの位置の間のビット文字列でポップ カウントを見つけるソリューションを探しています。
popcnt( 10(0101), 0, 3) = 1
popcnt( 100101(), 0, 0) = 0
popcnt( 10010(1), 0, 1) = 0
**私はオープンレンジを想定しており、右から左の順序を想定しています
標準のビット演算子とおそらく popcnt または同等のものを使用します。
違いがある場合は、2 つの文字列の違いの間の popcnt を探しています。文字列がb
あり、2 つの位置でビットを交換するとします。たとえば、変更されたビット間0101110 -> 1101100 => 3
に popcnt が必要です。2 つの間のビットが 3 である場合、 popcnt は 30101110 -> 1101100
10110
ビットハックでこれを行うための独創的な方法を見つけましたか?