/*求一个十六进制数中'1'的个数*/
#include<stdio.h>
int main()
{
int sum=0,i,m;
printf("请输入一个十六进制数\na = 0x");
scanf("%x",&m);
for(i=0;i<32;i++) // int 型16进制占4个字节32个位
{
#ifdef DEBUG
printf("i=%d\n",i);
#endif
if((unsigned)m>>i&1) //右移1位即除2,2位除4,因为只看最低位故需要与1取与,if不成立
sum++;
}
printf("sum = %d\n",sum);
return 0;
}