求一個整數儲存在記憶體中的二進位制中1的個數
阿新 • • 發佈:2021-02-05
求一個整數儲存在記憶體中的二進位制中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;
}
執行結果如下:
菜菜的程式碼,希望能夠幫助到你喲!