题目来源:https://leetcode.cn/problems/number-of-even-and-odd-bits/
C++题解:模2(%2)可以判断奇偶数,右移运算符(>>)是针对二进制数(右边的二进制位丢弃,正数左补0,负数左补1)。奇数位为1,odd++;偶数位为1,even++。
class Solution {
public:
vector<int> evenOddBit(int n) {
vector<int> a(2);
int even = 0, odd = 0;
int ii = 0;
while(n>0){
if(ii % 2 == 0){
if((n - 2*(n>>1)) % 2 == 1) even++;
}
if(ii % 2 == 1){
if((n - 2*(n>>1) ) % 2 == 1) odd++;
}
n = n>>1;
ii++;
}
a[0] = even;
a[1] = odd;
return a;
}
};