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的个数就知道需要改变几位了
异或:相同为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; }
相关文章推荐
- c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。
- 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- 输入两个整数m和n,计算m需要改变多少位才能得到n
- 输入两个整数m和n,计算m需要改变多少位才能得到n
- 输入整数m,n,判断需要改变二进制中多少位才能使其相等
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 28.整数的二进制表示中1的个数 题目:输入一个整数,求该整数的二进制表达中有多少个1。 例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- 输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
- Java算法总结:输入一个整数,求该整数的二进制表示中有多少个1
- 计算一个整数的二进制表示有多少个1(别人的最快算法)
- 1.编程实现: 两个int(32位)整数m和n的二进制表达中, 有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7
- 算法的强大——快速计算一个正二进制整数中包含多少个1
- 每天学习一算法系列(26)(输入一个整数,求该整数的二进制表达中有多少个1)
- 每天学习一算法系列(27)(输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序)
- 输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.