1

如果我有两个 32 位整数,那么检测其中哪些具有密集/稀疏位分布的最佳方法是什么?例如,0xef00 和 0x1131。想知道是否有任何指标/转换可以告诉我选择后者?

谢谢。

4

1 回答 1

1

这是一个可能的指标:

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

sparseness = 1 .. 3 表示密集位分布,sparseness = 3 .. 5 表示稀疏位分布。

您可以使用不同数量的移位和/或使用位旋转而不是移位。

于 2012-04-20T16:11:38.320 回答