您的位置:首页 > 编程语言 > C语言/C++

C++ 算法之 输入两个整数m n,求计算需要改变m的二进制表示中的多少位才能得到n

2014-12-18 09:33 471 查看
思路:先把m与n进行异或运算,再统计异或结果当中的1的个数;

异或:相同为0,不同为1; 0^0 = 0; 1^1 = 0; 0^1 = 1; 1^0 = 1;

比如10 : 1010 ; 13:1101;

10^13 ------> 1 0 1 0

1 1 0 1

结果 0 1 1 1

异或有几个不同为就会有几个1;统计1的个数就知道需要改变几位了

// changeNumber.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;

int changeNum(int n,int m)
{
	int k = (m ^ n);

	return k;

}
int NumberOf1Ex2(int n)
{
	int count = 0;
	while (n)
	{

		n = n & (n-1);
		++count;
	}

	return count;
}

int _tmain(int argc, _TCHAR* argv[])
{

	int k = changeNum(10,13);
	int l = NumberOf1Ex2(k);
	cout<<l<<endl;

	getchar();
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐