您的位置:首页 > 其它

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

2017-10-09 16:55 253 查看
求位不同的时候我们可以调用一个compare函数,函数里面运用for循环,需要注意的是:((a & 1) ^ (b & 1))这块是先与再异或。二进制数列与上1求出最低位,然后两个最低位进行异或比较,符合条件的话 court++,最后再右移一位直至循环结束。

与 &    :   两个操作数同为1是方为1,不同为0.
异或 ^ :   相同为0,不同为1。

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int compare(int a, int b)//函数定义

{

 int i = 0;

 int count = 0;

 for (i = 0; i < 32; i++)

 {

  if (((a & 1) ^ (b & 1)) == 1)//符合条件加1

  {

   count++;

  }

  a >
96ad
>= 1;

  b >>= 1;

 }

 printf("count=%d\n", count);

 return 1;

}

int main()

{

 int m = 0;

 int n = 0;

 printf("请输入两个数:");

 scanf("%d%d", &m, &n);

 compare(m, n);//函数调用

 system("pause");

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐