#include "stdio.h"
#include <math.h>
int Binary1Num(int m) //计算整形数字的二进制表示时中1的个数函数
{ //实际上计算机不管你输入的什么数都是以二进制保存的,因此只需移位运算符即可
int n=0,b[16]; int i,sum=0; //除了将要输入复制的变量外都要附上初值
for(;m;m>>=1 )sum+=m&1; //>>=是将i转换成二进制数开始向右移位运算符
return sum;
}
void main(int argc,char*argv[])
{ int a,b;
int c=0,d=0;int e,f;
scanf("%d%d",&a,&b);
c=abs(a); //要添加库#include <math.h>
d=abs(b);
e=Binary1Num(c) ;
f=Binary1Num(d);
// printf("%d %d",e,f);
if(e==f)
printf("0");
else if(e>f)
printf("%d",a);
else if(e<f)
printf("%d",b);
else printf("-1");
}
输入 -30
20
输出-30