求一個數字二進制中1的個數

1.一個很簡單的思路,把每一位與1相與如果結果是1,就代表這一位是1,相反是0
int BinaryNumOne1(int num)
{
	int count = 0;
	while (num)
	{
		if (num & 1)
		{
			count++;
		}
		num = num >> 1;
	}
	return count;
}
每次把num右移一位,但是如果num的最高位爲1其他位爲0,那它要移32位(假設int佔4個字節),這樣效率就比較的低了

2.改進方法:
代碼如下:
int BinaryNumOne2(int num)
{
	int count = 0;
	while (num)
	{
		count++;
		num = num & (num - 1);
	}
	return count;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章