/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function(n) {
//特殊判断
if(n<=0) return false;
//2的幂次方的规律: 1,2,4,8...对应的二进制位都只有一个1,消去1后,如果是0,就是true
return (n & (n-1)) == 0;
};
/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
var reverseBits = function(n) {
let res = 0;
//位翻转
for(let i =0;i <32;i++) {
res |= (n & (1<<i)) == 0 ? 0 : (1<<(31-i));
}
return res>>>0;
};
/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
var reverseBits = function(n) {
let res = 0;
//取模求和:从最后一位取1翻转到前面
for(let i =0;i <32 && n > 0 ;i++) {
if((n&1) == 1) {
res |= (1<<(31-i))
}
n >>>= 1;
}
return res>>>0;
};