如何判断一个byte数据中有多少bit为1?
以下是Brian W. Kernighan公开的一个方法
unsigned bit_count(unsigned v)
{
unsigned int c; //置位总数累计
for (c = 0; v; c++)
{
v &= v - 1; //去掉最低的置位
}
return c;
}
// 15的二进制为1111, 调用后为1的bit数为 4
unsigned bitNum = bit_count(15);
判断某一位的值
#include <stdio.h>
#include <stdlib.h>
#define SET_BIT(x, bit) (x |= (1 << bit)) /* 置位第bit位 */
int main()
{
unsigned int a=0x66;//二进制 01100110
int i;
for(i=0;i<8;i++)
{
if(a&(1<<i))//关键点
{
printf("0x66二进制的bit%d位的值是1\n",i);
}
else
{
printf("0x66二进制的bit%d位的值是0\n",i);
}
}
return 0;