1

2 つの 32 ビット整数がある場合、それらのうちどれが密/疎ビット分布を持っているかを検出する最良の方法は何ですか? たとえば、0xef00 と 0x1131 です。後者を選択するように指示できるメトリック/変換があるかどうか疑問に思っていますか?

ありがとう。

4

1 に答える 1

1

考えられる指標の1つを次に示します。

sparseness = popcnt((x<<2) | (x<<1) | x | (x>>1) | (x>>2)) / popcnt(x)

スパースネス=1.. 3は密なビット分布、スパースネス= 3..5はスパースビット分布。

シフトの代わりに、異なる数のシフトを使用したり、ビットローテーションを使用したりできます。

于 2012-04-20T16:11:38.320 に答える