判断偶数
偶数的二进制末位一定是0,奇数是1,如4(10),5(101),二进制补齐位数后,运算方式:1&1=1 1&0=0,所以只需要按位&1就可以判断是否是偶数
const isEven = (num)=>{
if(typeof num !=="number") return;
return num>0&&(num&1)==0
}
console.log(isEven(2)); // true
console.log(isEven(3)); // false
判断一个数n是否为2的幂
如果是2的幂,高位一定有1,低位全是0(8421码),而n-1补位后高位为0,其他位都是1,因此可以判断:
const isPowerToTow = (n)=>{
if (typeof n !=='number') return
return n>0&&((n&(n-1))===0)
}
console.log(isPowerToTow(4)); // true
console.log(isPowerToTow(3)); // false
二进制中1的个数
相邻的两个数,二进制只相差末尾的1(8421码),根据这个特点,就可以计算二进制中1的个数
const hammingWeight = (n)=> {
if (typeof n !=='number') return
let index = 0;
while(n){
++index
n = n & (n-1)
}
return index
};