判断一个字节中有几位置1,哪几位为1
如何判断一个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;//二进制 01100110int 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;