【发布时间】:2021-01-26 23:25:53
【问题描述】:
我有介于 32-8191 之间的整数值,我想将其映射到大致对数刻度。如果我使用基数 2,我可以只计算前导零位并将它们映射到 8 个插槽中,但这太粗略了;我需要 32 个插槽(更多会更好,但我需要它们映射到 32 位值中的位),其对数的底数约为 1.18-1.20。有人有一些技巧可以非常快速地计算这个值或合理的近似值吗?
我的直觉是使用条件将范围分解为 2 或 3 个子范围,并为每个子范围使用一个小的查找表,但我想知道是否有一些技巧可以用 count-leading-zeros 然后细化结果,特别是因为结果不必是精确的,而只是大致对数。
【问题讨论】:
标签: c optimization integer bit-manipulation logarithm