求一个字节中被置1 的位的个数。

实现原理参考我的另一篇博客 嵌入式开发中对寄存器的位操作

#include <stdio.h>

int numOfBitOne(char var)
{
	int i, cnt = 0;
	for(i=0; i<8; i++)
	{
		if( (var>>i) & 0x1 )
			cnt++;
	}
	return cnt;
}
int main()
{
	printf("%d\n", numOfBitOne(122));
	return 0;
}

这个算法不仅可以求一个字节中被置1 的位的个数,也可以判断一个整数是不是2的正整数次幂。若一个数是2的正整数次幂,则这个数在内存中的形式必定是独热码,即只有一位被置1。
if( numOfBitOne(var) == 1 ) printf("是2的正整数次幂\n");


版权声明:本文为qq_877667836原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。