我的整数值范围为 32-8191,我想将其映射到大致对数刻度。如果我使用基数 2,我可以只计算前导零位并将它们映射到 8 个插槽中,但这太粗略了;我需要 32 个插槽(更多会更好,但我需要它们映射到 32 位值中的位),其对数的底数约为 1.18-1.20。任何人都有一些技巧来计算这个值,或者一个合理的近似值,非常快?
我的直觉是用条件将范围分解为 2 或 3 个子范围,并为每个子范围使用一个小的查找表,但我想知道是否有一些技巧可以用 count-leading-zeros 然后细化结果,特别是因为结果不必是精确的,而只是大致对数。