输入两个正整数,这里比较大小,不是简单的比较数值的大小 ,而是比较两个正整数对应的二进制数中含有1的个数多少?
进制转换,字符串中1的计数;
#include <stdio.h>
int sb(int n);
int main()
{
int a,b;
scanf("%d%d",&a,&b);
//printf("%d %d",sb(a),sb(b));
if(sb(a)>sb(b))
printf("%d>%d",a,b);
if(sb(a)==sb(b))
printf("%d==%d",a,b);
if(sb(a)<sb(b))
printf("%d<%d",a,b);
return 0;
}
int sb(int n)
{
char str[100];
int k=0,cont=0;
int l;
while(n!=0)
{
l=n%2;
n/=2;
str[k]="0123456789abcdef"[l];
k++;
}
str[k]='\0';
for(int i=0;i<k;i++)
if(str[i]=='1')
cont++;
return cont;
}