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

简介: 求两个整数二进制中不同位的个数


/***********************************************************************

目的:输入两个整数并统计两个整数二进制中不同位的个数

分析:

▶ 最直接的方法就是两个对应的位相比较,前提是要得到它们的每1位

▶ 使用异或 '^'后,再统计

平台:Visual studio 2017 && windows

*************************************************************************/

📝 实例代码1:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
  int i = 0;
  int count = 0;
  int m = 0;
  int n = 0;
  scanf("%d %d", &m, &n);
  for(i = 0; i < 32; i++)
  {
    if(((m >> i) & 1) != ((n >> i) & 1))
    {
      count++;
    }
  }
  printf("%d\n", count);
  return 0;
}

📝 实例代码2:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
  int i = 0;
  int count = 0;
  int m = 0;
  int n = 0;
  scanf("%d %d", &m, &n);
  //相同为0,相异为1
  int ret = m ^ n;
  //这时去统计ret里有几个1,就说明m和n中有几个位不同
  while(ret)
  {
    ret = ret & (ret - 1);
    count++;
  }
  printf("%d\n", count);
  return 0;
}


相关文章
|
6月前
二进制中1的个数
二进制中1的个数
36 0
|
3月前
|
C语言
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
这篇文章展示了如何使用栈(包括顺序栈和链栈)实现将十进制数值转换成八进制数值的方法,通过C语言编程演示了两种栈的实现方式和使用场景。
用栈实现将一个十进制数值转换成八进制数值。即用该十进制数值除以8,并保留其余数;重复此操作,直到该十进制数值为0为止。最后将所有的余数反向输出就是所对应的八进制数值
|
6月前
|
C++
Acwing.26 二进制中1的个数
Acwing.26 二进制中1的个数
|
6月前
|
算法 Python
计算32位二进制整数中1的个数(包括负数补码)
计算32位二进制整数中1的个数(包括负数补码)
116 0
|
11月前
统计两个整数所对应的二进制数中的不同位数的个数
统计两个整数所对应的二进制数中的不同位数的个数
41 0
计算二进制中1的个数
计算二进制中1的个数
61 0
|
C语言
已知一个整数,如何判断这个整数是无符号的?
已知一个整数,如何判断这个整数是无符号的?
88 0
【C语言】输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示
|
算法
34.二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
80 0
34.二进制中1的个数
|
开发者
二进制中1的个数(上)
二进制中1的个数(上)
二进制中1的个数(上)