編寫程式碼實現:求一個整數儲存在二進位制中1的個數
阿新 • • 發佈:2021-02-11
求一個整數儲存在二進位制中1的個數
整數是十進位制數,將其轉換為二進位制數就會得到32位二進位制數
如 00000000000000000000000000001011
我們可以通過將二進位制數不斷地移動以為並且與上一個1,這樣只要每次與1的結果是1,這一位就位1
用count++來計算,否則則為0。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 0;
int count = 0;
scanf("%d", &num);
int i = 0;
for (i = 0; i<32 ; i++)
{
if (1 == ((num >> i) & 1))
count++;
}
printf("%d\n", count);
system("pause");
return 0;
}
2.雖然我們寫出來想要的程式碼了,但是每一次都要執行32次,是不是有點麻煩
我們做一下優化
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num = 0;
printf("請輸入一個整數:");
scanf ("%d", &num);
int i = 0;
int count = 0;
while (num)
{
count++;
num = num&(num - 1);
}
printf("它在二進位制中1的個數 = %d\n", count);
system("pause");
return 0;
}
感謝觀看!