求两个数二进制中不同位的个数,它来了!!

   日期:2020-11-07     浏览:87    评论:0    
核心提示:描述  编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同。输入例子:1999 2299输出例子:7思路  1.先将 m 和 n 进行按位异或,此时m和n相同的二进制比特位清零,不同的二进制比特位为1;  2.统计异或完成后结果(temp)的二进制比特位中有多少个1即可(采用按位与)。代码实现#include<stdio.h>#include<windows.h>#pragma warning(disable:4996)int d

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

    • 描述
    • 思路
    • 代码实现
    • 知识回顾

描述

  编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同。
输入例子:1999 2299
输出例子:7

思路

  1.先将 m 和 n 进行按位异或,此时m和n相同的二进制比特位清零,不同的二进制比特位为1;
  2.统计异或完成后结果(temp)的二进制比特位中有多少个1即可(采用按位与)。

代码实现

#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)

int diff_bit(int m, int n){ 
	int tmp = m^n;
	int count = 0;
	while (tmp)
	{ 
		tmp = tmp&(tmp - 1);
		count++;
	}
	return count;
}

int main()
{ 
	int m, n;
	printf("请输入两个数字: ");

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

	int ret = diff_bit(m, n);

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

	system("pause");
	return 0;
}

知识回顾

& —> 按位与(有0出0)

| —>按位或(有1出1)

^ —>按位异或(相同为0,相异为1)

  ok ,文章就先到这里了,希望这篇文章能够帮助到你对指针的认识,若有不足或者不正之处,希望谅解并欢迎批评指正!

  如果本文章对你有帮助,哪怕一点点,那就请点一个赞呗,谢谢~~

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服