#include<stdio.h>
#include<stdlib.h>
//方法一:
int Numberof1(int n)
{
int count = 0;
while(n)
{
if(n & 1)
count++;
n = n >> 1; //位操作比乘除運算效率高。
}
return count;
}
//上面的程序如果傳入的n是一個負數(shù),將造成死循環(huán)。因為負數(shù)移位時要保留符號位。
//方法二:
int _Numberof1(int n)
{
int flag = 1;
int count = 0;
while(flag) //循環(huán)的次數(shù)與n的位數(shù)有關(guān),時間復雜度高
{
if(n & flag)
count++;
flag = flag<<1;
}
return count;
}
//方法三:
int __Numberof1(int n)
{
int count = 0;
while(n) //有多少個1循環(huán)多少次,比較高效
{
count++;
n = n & (n-1);
}
return count;
}
int main()
{
int sum = 20;
int num1 = Numberof1(sum);
int num2 =_Numberof1(sum);
int num3 =__Numberof1(sum);
printf("%d,%d,%d\n",num1,num2,num3);
system("pause");
return 0;
}總結(jié):

創(chuàng)新互聯(lián)公司為您提適合企業(yè)的網(wǎng)站設(shè)計?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強的網(wǎng)絡(luò)競爭力!結(jié)合企業(yè)自身,進行網(wǎng)站設(shè)計及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到網(wǎng)站建設(shè)、成都做網(wǎng)站, 我們的網(wǎng)頁設(shè)計師為您提供的解決方案。
一般進行二進制操作時,都可以采用先-1,再按位與的方法。-1相當于從最右邊的1到最低位,全都按位取反,再與的話,就把最右邊的1置為0.
網(wǎng)頁名稱:求二進制中1的個數(shù)
分享鏈接:http://chinadenli.net/article14/pgjdde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、虛擬主機、營銷型網(wǎng)站建設(shè)、網(wǎng)站改版、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)