今天分享一道題目,用三種方法來求解
二進(jìn)制1的個(gè)數(shù)
方法1
我們的十進(jìn)制除10和取余數(shù)就可以得到我們每一位的數(shù)字,那我們的二進(jìn)制也可
以
#include<stdio.h>
int num_find_1(unsigned int n)
{
int count = 0;
while (n)
{
if (1 == n % 2)
{
count++;
}
n /= 2;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
這是一種方法,另外一種就是我們可以用移位操作符來算
int num_find_1(int n)
{
int i = 0;
int count = 0;
for (i = 0; i < 32; i++)
{
if (((n >> i) & 1) == 1)
{
count++;
}
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
這個(gè)方法是不是也是特別妙呢,當(dāng)然還有更妙的方法,請看?。。?mark hidden color="red">文章來源:http://www.zghlxwxcb.cn/news/detail-613430.html
int num_find_1(int n)
{
int i = 0;
int count = 0;
while (n)
{
n = n & (n - 1);
count++;
}
return count;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = num_find_1(n);
printf("%d", ret);
return 0;
}
相信看完總會學(xué)會一種方法,今天的分享就到這里啦,不知道大家有沒有注意到我的開頭不一樣了,嘻嘻。文章來源地址http://www.zghlxwxcb.cn/news/detail-613430.html
到了這里,關(guān)于C語言每日一題之整數(shù)求二進(jìn)制1的個(gè)數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!