```
class Solution {
public:
bool isPowerOfFour(int num) {
int mask = 0x55555555; // if you do 4^0 + 4^1 + 4^2 + 4^3 +..... in calc.exe in hex form
// you will find this magical principle.
// every time when add, the result is in form like "010101010101"
// So, 0x55555555 can be the mask to see
// whether the num is partly matching power of 4
if (num == 0) // Special case.
return false;
if (num & (num - 1)) // Every num which is power of 4 just has one 1bit in its binary form
return false; // num & (num - 1) can judge if it is only one 1bit in its Binary
if (num & (~mask)) // nums which can fit "only one 1 bit in its Binary" and "the 1 Bit
return false; // is at correct position" are the power of 4.
else
return true;
}
};
```