bool aa(int n){
bool result = false;
if(n&(n-1) == 0){
result = true;
}
return result;
}
2,输入两个整数 m 和 n,计算需要改变 m 的二进制表示中的多少位才能得到 n。比如 10 的二进制表示为 1010,13的二进制表示为 1101 ,需要改变 1010 中的 3 位数才能得到 1101.
我们可以分为两步解决这个问题:第一步求这两个数的异或;第二步统计异或结果中 1 的个数
#include <iostream>
using namespace std;
int NumberOf1(int n) {
int count = 0;
while(n){
count ++;
n = n & (n-1);
}
return count;
}
int main(){
int m = 10;
int n = 13;
cout<<NumberOf1(m^n)<<endl;
}