输入两个整数m和n,计算m需要改变多少位才能得到n

Posted zhou753099943

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入两个整数m和n,计算m需要改变多少位才能得到n相关的知识,希望对你有一定的参考价值。

题目:输入两个整数m和n,计算m需要改变多少位才能得到n?

解析:

        这个题我最开始是没有思路的,想了很久才有点思路,思路的来源是把他们转化成二进制后才有的

       例如:(5)的二进制:0101  (3)的二进制:0011
       如果要把5变成3的话,需要改变:2次,因为第一位0和最后一位1都相同

        所以不需要改变,做法,先将两个数异或,然后求异或后1的个数

int GetCount(int N,int M)
{
	int value=N^M;//先将两个数异或
	int count=0;
	while(value)
	{
		count++;
		value=(value&(value-1));//求异或后1的个数
	}
	return count;
}

void TestGetCount()
{
	int n=5;  //0101
	int m=3; //1010
	//题目的意思本意是将:1010-->0101
	cout<<"count is :"<<GetCount(n,m)<<endl;
}


以上是关于输入两个整数m和n,计算m需要改变多少位才能得到n的主要内容,如果未能解决你的问题,请参考以下文章

c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n

位运算

C语言题目---两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

题解数字交换游戏

C语言,键盘输入一个2位以上的任意数,输出这个数的第m位开始,到第n位结束的数。

第K 小数