1. 程式人生 > 其它 >求一個整數儲存在記憶體中的二進位制中1的個數

求一個整數儲存在記憶體中的二進位制中1的個數

技術標籤:C語言演算法c語言

求一個整數儲存在記憶體中的二進位制中1的個數

程式碼如下:

#include<stdio.h>
int main()
{
	int num=0;
	int count=0;
	scanf("%d",&num);
	while(num)
	{
		if(num%2==1)
			count++;
		num=num/2;
	}
	printf("%d\n",count);
	return 0;
}

這個程式碼存在的問題是,如果輸入的是一個負整數,那麼結果就是錯誤的,執行如圖:
在這裡插入圖片描述
另一種程式碼如下:

int
main() { int num=0; int i=0; int count=0; scanf("%d",&num); for(i=0;i<32;i++) { if(1==((num>>i)&1)) count++; } printf("%d\n",count); return 0; }

執行結果如下:
在這裡插入圖片描述
菜菜的程式碼,希望能夠幫助到你喲!