题解 | #懂二进制#
懂二进制
http://www.nowcoder.com/practice/120e406db3fd46f09d55d59093f13dd8
思路:二进制不同位,直接采用异或,然后采用循环右移计算1的个数即可。
Java:
public class Solution {
public int countBitDiff (int m, int n) {
int c = m^n;
int count = 0;
while(c != 0){
count += c & 1;
c = c >> 1;
}
return count;
}
}
C++:
class Solution {
public:
int countBitDiff(int m, int n) {
int count = 0;
m = m ^ n;
for(int i = 0; i < 32; ++i){
count += (m >> i) & 1;
}
return count;
}
};