1/****************************************2>FileName:test.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月23日星期一21时04分35秒6****************************************/78#include<stdio.h>910intSumOfBit(intnum)11{12intcount=0;13inti=0;1415for(;i<=32;i++)16{17if((num&(1<<i))==1)//对应的bit位为118{19count++;20}21}2223returncount;24}




1/****************************************2>FileName:test1.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月23日星期一21时24分40秒6****************************************/7891011/*这种算法只适应于正数的情况,当为num为负数时,在某些平台下会是死循环12这种算法如果是正数,则不用算32次循环了*/131415#include<stdio.h>1617intNumOfBit(intnum)18{19intcount=0;2021while(num!=0)22{23if((num&1)==1)24{25count++;26}2728num>>1;29}3031returncount;32}~


1/****************************************2>FileName:test3.c3>Author:xiaoxiaohui4>mail:1924224891@qq.com5>CreatedTime:2016年05月23日星期一21时30分13秒6****************************************/7891011/*这种算法最佳*/1213#include<stdio.h>1415intNumOfBit(intnum)16{17intcount=0;1819while(num!=0)20{21num=num&(num-1);22count++;23}2425returncount;26}