【发布时间】:2011-05-23 15:24:16
【问题描述】:
假设我有一个递增的无符号整数序列C[i]。随着它们的增加,它们可能会占用越来越多的位。我正在寻找一个有效的条件,纯粹基于序列C[i] 和C[i+1] 的两个连续元素(过去和未来的元素是不可观察的),每次数字都会准确或大约一次评估为真所需的位数增加。
一个明显(但缓慢)的条件选择是:
if (ceil(log(C[i+1])) > ceil(log(C[i]))) ...
以及任何使用特殊 cpu 操作码计算前导零位数的东西(好得多,但仍然不是很好)。
我怀疑可能有一个很好的解决方案,涉及仅使用按位或和按位以及值C[i+1] 和C[i] 的表达式。有什么想法吗?
【问题讨论】:
-
请不要将此标记为重复!我问的是一个不太普遍但可能有更好解决方案的问题。
标签: c algorithm bit-manipulation