您的位置:首页 > 编程语言

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

2016-11-25 00:19 465 查看
【一】

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
int m = 0;
int n = 0;
int i = 0;
int count = 0;
printf("请输入两个数:\n");
scanf("%d%d", &m, &n);
for (i = 0; i < 32; i++)
{
if (((m >> i) & 1) ^ ((n >> i) & 1)) //让m和n右移i位然后分别和1相与 再异或 如果是真count++
count++;
}
printf("count=%d", count);
system("pause");
return 0;
}


【二】

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
int u = 0;
int m = 0;
int n = 0;
int count = 0;
printf("请输入两个数:\n");
scanf("%d%d", &m, &n);
u = m^n;  //m和n异或
while (u)   //相当于找出一个数;二进制中1的个数
{
count++;
u = u & (u - 1);
}
printf("count=%d", count);
system("pause");
return 0;
}


【三】

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
int i = 0;
int m = 0;
int n = 0;
int count = 0;
printf("请输入两个数:\n");
scanf("%d%d", &m, &n);
for (i = 0; i < 32; i++)
{
if ((m & 1) != (n & 1))
{
count++;
}
m = m >> 1;
n = n >> 1;
}
printf("count=%d", count);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二进制 编程
相关文章推荐