在一行上输入两个整数
,表示需要比较的两个正整数。
在一行上输出一个整数,表示
和
的二进制表示中不同的位数
。
15 8
3
在这个样例中,
的二进制为
,
的二进制为
。
从最低位对齐后比较四个二进制位,有
个位置上的数字不同,因此答案为
。
7 10
3
在这个样例中,
的二进制为
,
的二进制为
。
补齐后比较四个二进制位:
第
位(最低位):
;
第
位:
;
第
位:
;
第
位:
。
共有
个位置不同,故答案为
。
#include <stdio.h> #include <stdlib.h> int main() { unsigned int x,y; while(scanf("%d %d",&x,&y)!=EOF) { unsigned int temp=x^y; int count=0; while(temp) { if(temp%2) { count++; } temp/=2; } printf("%d\n",count); } return 0; }
#include <stdio.h> #include <stdlib.h> int main(void) { int m, n; fscanf(stdin, "%d %d", &m, &n); return fprintf(stdout, "%d", __builtin_popcount(m ^ n)), 0; }