题目描述
世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?
答案
class Solution {
public:
/**
* 获得两个整形二进制表达位数不同的数量
*
* @param m 整数m
* @param n 整数n
* @return 整型
*/
int countBitDiff(int m, int n) {
int result=
0;
int dif = m^n;
while(dif !=
0){
result += (dif&
1)&
1;
dif = dif>>
1;
}
return result;
}
};
分析
在C++中的位运算符‘&’、‘|’、‘~’、‘^’都可以直接用于int型数据,不需要进行十进制到二进制的转换。
转载请注明原文地址: https://ju.6miu.com/read-2884.html