计算整数二进制的第i位
(num>>i)&1)
汉明距离
class Solution {
public:
int hammingDistance(int x, int y) {
int XOR=x^y;//XOR运算
int num=0;
while(XOR!=0){
if(XOR%2==1) num++;
XOR=XOR>>1;//等价于XOR/=2;
}
return num;
}
};
计算汉明距离总和
int totalHammingDistance(vector<int>& nums) {
//逐位统计
int result=0;
for(int i=0;i<32;i++){
int sum1=0,sum0=0;
for(auto iter:nums){
if(((iter>>i)&1)==1) sum1++;
else sum0++;
}
result+=sum0*sum1;
}
return result;
}