C语言|求两个数的二进制中不同位的个数-创新互联

方法一:

成都创新互联专注于企业营销型网站建设、网站重做改版、老河口网站定制设计、自适应品牌网站建设、html5商城网站开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为老河口等各大城市提供网站开发制作服务。

结果:

//求两个数的二进制中不同位的个数
int diff() {
 int a = 0;
 int b = 0;
 int count = 0;
 int i = 0;
 scanf("%d %d", &a,&b);
 for (i = 0; i< 32; i++) {
     if (((a >>i) & 1) != ((b >>i) & 1)) {
         count++;
     }
 }
 return count;
}

int main() {
 int sum = diff();
 printf("%d\n", sum);
 return 0;
}

方法二(最优解):

这里用到了之前我博客写过的求一个二进制数有多少个1的方法

链接:http://t.csdn.cn/9EyfG

结果:

代码:

int diff2() {
 int a = 0;
 int b = 0;
 int count = 0;
 scanf("%d %d", &a, &b);
 //这里可以用按位异或^,相同的为0,不同的为1,
 //这样就只要统计按位异或后的1的个数
 int ret = a ^ b;
 int result = getnumCount(ret);
 return result;
}

int main() {
 int sum = diff2();
 printf("%d\n", sum);
 return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享标题:C语言|求两个数的二进制中不同位的个数-创新互联
分享URL:http://azwzsj.com/article/ccccee.html