我有一个长度为8的二进制数,例如00110101设置了8位.我需要一个快速位计数来确定设置位数.像x = x&(x-1)那样运行算法会将它限制为包含数字中的设置位数但是我不太确定如何使用它.一点帮助就会明显!
这x=x&(x-1)会从二进制字符串中删除最低设置位。如果计算在数字变为 0 之前删除最低位的次数,您将得到已设置的位数。
char numBits(char x){
char i = 0;
if(x == 0)
return 0;
for(i = 1; x &= x-1; i++);
return i;
}
Run Code Online (Sandbox Code Playgroud)