#include <bits/stdc++.h> using namespace std; int main() { int num1,num2,res=0; cin>>num1>>num2; string s1="",s2=""; while(num1) { s1=to_string(num1%2)+s1; num1/=2; } while(num2) { s2=to_string(num2%2)+s2; num2/=2; } while(s1.size()>s2.size()) s2="0"+s2; while(s1.size()<s2.size()) s1="0"+s1; for(int i=0;i<s1.size();i++) if(s1[i]!=s2[i]) res++; cout<<res<<endl; return 0; }
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n1 = sc.nextInt(), n2 = sc.nextInt(); n1 ^= n2; n2 = 0; while (n1 != 0) { if ((n1 & 1) == 1) { n2++; } n1 >>>= 1; } System.out.println(n2); } }
import java.util.Scanner; publicclassMain { publicstaticvoidmain(String[] args) { intn; intm; Scanner sc = newScanner(System.in); m = sc.nextInt(); n = sc.nextInt(); inta,b; intcount = 0; for(inti =1; i<32; i++){ a = m & 1; // 位运算,取二进制的最低位 b = n & 1; if(a != b){ count++; } m = m >>> 1; // 右移一位 n = n >>> 1; } System.out.println(count); } } |
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); n=n^m; m=0; while(n!=0){ ++m; n=n&(n-1); } System.out.println(m); } }先将n和m两数进行异或运算,得到的新数的二进制1的个数就等于前两个整数二进制位的不同个数,最后计算新数的1的个数即可。
#include <stdio.h> int get_different(int x,int y) { int a =(x^y);//先计算所有差异位 int count = 0; for(int i =0;i<32;i++) { if((a>>i)&1)//再接着判断即可 count++; } return count; } int main() { int a =0; int b =0; scanf("%d %d",&a,&b); int ret = get_different(a,b); printf("%d",ret); }
#include <stdio.h> int diffent_count(int m, int n) { int count = 0; for (int i = 0; i <= 31; i++) { if (((m >> i) ^ (n >> i)) & 1) { count++; } } return count; } int main() { int m, n; while (scanf("%d %d", &m, &n) != EOF) { int result = diffent_count(m, n); printf("%d\n", result); } return 0; }
#include <stdio.h> int Find_Diffent(int m, int n) { int num = m ^ n; int count = 0; int i = 0; for ( i = 0; i < 32; i++) { if ((num >> i) & 1 == 1) count++; } return count; } int main() { int m = 10; int n = 20; printf("%d\n", Find_Diffent(m, n)); return 0; }
#include <stdio.h> int main() { int a, b; while (scanf("%d %d", &a, &b) != EOF) { int c=a^b; int count=0; while(c!=0) { if(c%2==1) count++; c/=2; } printf("%d",count); } return 0; }