function isPowerOfTwo(n){
//&按位与运算,对于2的幂次方n,他的二进制表示中只有一个1
return (n & ( n - 1)) == 0
}
function judge(macAddress){
const nums = macAddress.split(":").map(str => parseInt(str,16));
const sum = nums.reduce((acc,cur) => acc + cur, 0)
return isPowerOfTwo(sum)
}
console.log(judge('00:11:22:33:44:55'))
console.log(judge('00:00:00:00:00:02'))
上述函数是判断整个mac地址是不是2的幂次方。(判断的重点是在于通过使用了按位与运算)
function isPowerOfTwoFunc(mac){
const lastByte = parseInt(mac.sunstr(-2),16);
return ((lastByte & (lastByte - 1)) === 0) && (lastByte !== 0)
}
这个是在检查mac地址的最后一位是不是2的幂次方。
上面两个的重点都在于使用与运算。