如何计算不小于给定数的最小的2整数次方幂?

• 本文约 199 字,阅读大致需要 1 分钟 • Development

dengxf同学提到的一个问题,想了一下,想到的一个算法:

令xx为已知量,yy为目标量,kk为迭代轮数,

  1. 令 y=x−1y=x-1,k=0k=0
  2. 对于 yy 右移 2k2^k 位 >0> 0的情形,执行下列操作,直到此条件不符合为止:
    y与前述结果相与;kk累进11。
  3. yy累进11。

原理:第(2)步的循环将除最高位的所有0均置位。最后一步(3)修正这一值。

但是感觉不太好,有没有更好的办法呢?