【C語言】輸入一個整數,輸出該數二進位制表示中1的個數,其中負數用補碼錶示
阿新 • • 發佈:2021-02-18
技術標籤:c語言
方法一:count計數法
#include<stdio.h>
int count_bit_one(unsigned int num)//負數的原始碼和補碼不相同,所以把負數的二進位制補碼轉化成對應的無符號的原始碼的數。正數的原始碼和補碼相同。
{
//此方法是對一個數的二進位制原始碼進行操作的
int count = 0;
while (num)
{
if (num % 2 == 1)
{
count++;
}
num /= 2;
}
return count;
}
int main()
{
int num = 0;
scanf ("%d", &num);
printf("%d\n", count_bit_one(num));
return 0;
}
方法二:按位與法(普通版)
#include<stdio.h>
int count_bit_one(int num)
{
int i = 0;
int count = 0;
for (i = 0; i < 32; i++)
{
if (((num >> i) & 1) == 1)
{
count++;
}
}
return count;
}
int main ()
{
int num = 0;
scanf("%d", &num);
printf("%d\n", count_bit_one(num));
return 0;
}
方法三:按位與法(高效率版)
#include<stdio.h>
int count_bit_one(int num)
{
int count = 0;
while (num)
{
count++;
num = num & (num - 1);//每進行一次這個操作,num的二進位制表示中就少一個1,直到最後全為0
}
return count;
}
int main()
{
int num = 0;
scanf("%d", &num);
printf("%d\n", count_bit_one(num));
return 0;
}
執行結果