1. 程式人生 > >求一個位元組中被置1 的位的個數。

求一個位元組中被置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");