1. 程式人生 > >劍指offer------其他題目-----二進位制中1的個數

劍指offer------其他題目-----二進位制中1的個數

1.題目:

2.演算法思路:

1.涉及到二進位制想到位運算:

2.

程式碼:

int NumberOf1(int n)
{
	int count = 0;
	while(n)
	{
		if(n&1)
			count++;
			
		n=n>>1;
	}
	
	return count;
}

3.問題:

3.2改進:

程式碼:

int NumberOf2(int n)
{
	int count=0;
	unsigned int flag=1;
	while(flag)
	{
		if(n&flag)
			count++;
		
		flag=flag<<1;
	}
	
	return count;
}

4.終極改進:

程式碼:

int NumberOf3(int n)
{
	int count=0;
	while(n)
	{
		count++;
		n=n&(n-1);
	}
	return count;
}