相关疑难解决方法(0)

计算"2的幂"数字的最快方法?

找到2的幂的最快方法是什么,使用一定数量(即2的幂)?

我对数学不是很熟练,所以我不确定如何最好地描述它.但功能将类似于x = 2^y这里y是输出,并且x是输入.这是一个真实表,如果有助于解释它的外观.

0 = f(1)
1 = f(2)
2 = f(4)
3 = f(8)
...
8 = f(256)
9 = f(512)
Run Code Online (Sandbox Code Playgroud)

我已经做了一个这样做的功能,但我担心它不是很有效(或者说优雅).这样做会有更简单,更有效的方法吗?我正在使用它来计算纹理的哪个区域用于缓冲绘制的完成方式,因此每个绘制的对象至少调用一次.这是我到目前为止所做的功能:

uint32 getThePowerOfTwo(uint32 value){
    for(uint32 n = 0; n < 32; ++n){
        if(value <= (1 << n)){
            return n;
        }
    }
    return 32; // should never be called
}
Run Code Online (Sandbox Code Playgroud)

c++ math

8
推荐指数
1
解决办法
2683
查看次数

log2的幂为2的整数

是否有一种有效的方法来查找数字的log2,假设它是2的幂.我知道明显的方法,如有一张桌子或

for (log2=0;x!=1;x>>=1,log2++);
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更有效/更优雅的方式.

c++ algorithm math logarithm

7
推荐指数
1
解决办法
1969
查看次数

在二进制数中查找尾随0

如何在二进制数中找到尾随0的数量?基于K&R bitcount在二进制数中找到1的示例我修改了一下以找到尾随0.

int bitcount(unsigned x)
{
  int b;
  for(b=0;x!=0;x>>=1)
      {
        if(x&01)
          break;
        else
          b++;
      }
Run Code Online (Sandbox Code Playgroud)

我想回顾一下这种方法.

c binary

4
推荐指数
2
解决办法
6155
查看次数

标签 统计

c++ ×2

math ×2

algorithm ×1

binary ×1

c ×1

logarithm ×1