c - 如何在c中没有循环的情况下计算一个字节中的个数?

标签 c

<分区>

Possible Duplicate:
Best algorithm to count the number of set bits in a 32-bit integer?

你好,

有没有更紧凑的方法来计算一个字节中 1 的个数而不使用循环?如果不需要,我不想执行以下操作。谢谢。

char myValue = 0x0F;

int counter = 0;

while (myValue > 0)
{
 if (myValue & 0x01)
 {
  counter ++;
 }

 myValue = myValue >> 1;
}

最佳答案

 ((i>>3)&1)+((i>>2)&1)+((i>>1)&1)+(i&1)

或者使用汇编(SSE/MMX)。 http://gurmeet.net/puzzles/fast-bit-counting-routines/

关于c - 如何在c中没有循环的情况下计算一个字节中的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4806336/

相关文章:

无法让 OpenGL 3.3 绘制三角形,不会抛出任何错误

c - const 关键字是什么意思?

c - 使用system()执行存在缓冲区溢出漏洞的程序时没有报错信息

对 Linkfloat 的使用感到困惑

c - C中变量初始化的宏

c - 从链表中释放函数时出错

C: 方程式只出现一次

c - 分配给结构中的静态数组时堆缓冲区溢出

在 ubuntu 中将数字文字从 64 位编译器转换为 32 位编译器

c - 在宏 C 内部或外部定义函数(高中断)