求两个数二进制中不同位的个数

简介: 题目内容:两个int(32)整数m和n的二进制表达中,有多少个位(bit)不同?输入例子:1999 2299输出例子:7

题目内容:两个int(32)整数m和n的二进制表达中,有多少个位(bit)不同?

输入例子:

1999 2299

输出例子:

7


解题思路:

1.先将m和n进行按位异或,此时m和n相同的二进制比特位清零,不同的二进制比特位1

2.统计异或完后结果的二进制比特位中有多少个1即可

#include<stdio.h>
int calc_diff_bit(int m, int n)
{
  int tmp = m ^ n;
  int count = 0;
  while (tmp)
  {
  tmp = tmp & (tmp - 1);
  count++;
  }
  return count;
}
int main()
{
  int m, n;
  while (scanf("%d %d", &m, &n) == 2)
  {
  printf("%d\n", calc_diff_bit(m, n));
  }
  return 0;
}
相关文章
|
3月前
二进制中1的个数
二进制中1的个数
18 0
|
12天前
|
C++
Acwing.26 二进制中1的个数
Acwing.26 二进制中1的个数
|
1月前
|
算法
算法题 — 整数转二进制,查找其中1的数量
算法题 — 整数转二进制,查找其中1的数量
12 0
|
4月前
统计两个整数所对应的二进制数中的不同位数的个数
统计两个整数所对应的二进制数中的不同位数的个数
20 0
|
9月前
计算二进制中1的个数
计算二进制中1的个数
43 0
|
11月前
求一个数的二进制位中1的个数
求一个数的二进制位中1的个数
|
算法
34.二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
63 0
34.二进制中1的个数
|
存储 机器学习/深度学习
求一个整数存储在内存中的二进制中1的个数;例如15有4个1(三种方法详解)
求一个整数存储在内存中的二进制中1的个数;例如15有4个1(三种方法详解)
109 0
求一个整数存储在内存中的二进制中1的个数;例如15有4个1(三种方法详解)
|
开发者
二进制中1的个数(上)
二进制中1的个数(上)
二进制中1的个数(上)
|
存储 前端开发 程序员
二进制中1的个数(下)
二进制中1的个数(下)
二进制中1的个数(下)