R..*_*R.. 3 c algorithm bit-manipulation
假设我有一个递增的无符号整数序列C[i].随着它们的增加,它们可能会占据越来越多的位.我正在寻找一个有效的条件,纯粹基于序列的两个连续元素C[i]和C[i+1](过去和未来的元素是不可观察的),每次所需的位数增加时,它将精确地或近似地评估为真.
条件的一个明显(但缓慢)的选择是:
if (ceil(log(C[i+1])) > ceil(log(C[i]))) ...
Run Code Online (Sandbox Code Playgroud)
以及使用特殊cpu操作码计算前导零位数的任何事情(更好但仍然不是很好).
我怀疑可能有一个很好的解决方案涉及一个表达式,只使用按位或按位和值C[i+1]和C[i].有什么想法吗?
Kei*_*all 16
假设你的两个数字是x和y.如果它们具有相同的高阶位,则x ^ y小于x和y.否则,它高于两者中的一个.
所以
v = x^y
if (v > x || v > y) { ...one more bit... }
Run Code Online (Sandbox Code Playgroud)