在一行上输入两个整数
,表示需要比较的两个正整数。
在一行上输出一个整数,表示
和
的二进制表示中不同的位数
。
15 8
3
在这个样例中,
的二进制为
,
的二进制为
。
从最低位对齐后比较四个二进制位,有
个位置上的数字不同,因此答案为
。
7 10
3
在这个样例中,
的二进制为
,
的二进制为
。
补齐后比较四个二进制位:
第
位(最低位):
;
第
位:
;
第
位:
;
第
位:
。
共有
个位置不同,故答案为
。
import java.util.*;
public class Main {
private static final int MAX = 1005;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1 = sc.nextInt(), n2 = sc.nextInt();
int count = 0;
for (; n1 != 0 || n2 !=0; n1 >>= 1, n2 >>= 1) {
if ((n1 & 1) != (n2 & 1)) {
count++;
}
}
System.out.println(count);
}
}
import java.util.Scanner;
/**
* @author wylu
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int xor = scanner.nextInt() ^ scanner.nextInt();
int count = 0;
while (xor != 0) {
xor &= (xor - 1);
count++;
}
System.out.println(count);
}
}
}
#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;
} #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;
}