Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如果我有两个 32 位整数,那么检测其中哪些具有密集/稀疏位分布的最佳方法是什么?例如,0xef00 和 0x1131。想知道是否有任何指标/转换可以告诉我选择后者?
谢谢。
这是一个可能的指标:
sparseness = popcnt((x<<2) | (x<<1) | x | (x>>1) | (x>>2)) / popcnt(x)
sparseness = 1 .. 3 表示密集位分布,sparseness = 3 .. 5 表示稀疏位分布。
您可以使用不同数量的移位和/或使用位旋转而不是移位。