解析:int型数据正好为32位,可直接计算int转化为二进制后1的个数。
#include "stdafx.h"
{
int t;
int i;
int count=0;
printf("Please input the num:");
scanf("%d",&t);for(i=0;i<32;i++)
{
if((t&(t<<i))!=0)
{
count++;
}
}
printf("The num of 1 is:");
printf("%d",count);
printf("\n");
return count;
}
运行如下:
20转化为二进制位 0001 0010,正好只有两个1。