相关疑难解决方法(0)

用于计数位的高效按位运算或找到最右侧的位

给定unsigned int,我必须执行以下操作:

  1. 计算设置为1的位数
  2. 找到最左边1位的索引
  3. 找到最右边1位的索引

(该操作不应该是架构依赖).

我已经使用按位移位完成了这个,但我必须迭代几乎所有的位(es.32).例如,计算1:

unsigned int number= ...;
while(number != 0){
    if ((number & 0x01) != 0)
        ++count;
    number >>=1;
}
Run Code Online (Sandbox Code Playgroud)

其他操作类似.

所以我的问题是:有没有更快的方法呢?

c c++ binary bits bit-manipulation

5
推荐指数
3
解决办法
6416
查看次数

标签 统计

binary ×1

bit-manipulation ×1

bits ×1

c ×1

c++ ×1