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://scyanting.com/article/ccccee.html