首页 > 其他 > 详细

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

时间:2020-11-04 18:35:31      阅读:54      评论:0      收藏:0      [点我收藏+]
//第一次尝试:
#define
_CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int DifferentDigits(int m, int n) { int ret = 0; int flag = 0; int num = 1; //int flagm = 0; //int flagn = 0; flag = m ^ n; for (int i = 0; i < 32; i++,num=num<<1) { if ((flag & num) == num) { ret++; } } return ret; } int main() { int m = 0; int n = 0; printf("请输入两个数:\n"); scanf("%d %d", &m, &n); int ret = DifferentDigits(m, n); /*int ret = 1; ret=ret << 1;*/ printf("%d\n", ret); return 0; }
//此代码要做的就是求两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 
//那么首先,使用按位异或,将两个数的不同位变成1,相同为变成0
//然后使用按位与,来求出其中有多少个1即可

 

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

原文:https://www.cnblogs.com/zhm521/p/13926698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!