用按位與(&)判斷奇偶數(shù)
奇數(shù)用二進(jìn)制表示罢防,最后一位永遠(yuǎn)是1蹲缠,偶數(shù)用二進(jìn)制表示棺克,最后一位永遠(yuǎn)是0。
按位與會在兩個(gè)數(shù)值的對應(yīng)位都是1時(shí)返回1线定,任何一位是0娜谊,則返回0。
所以我們只要將要操作的數(shù)字與1進(jìn)行按位與運(yùn)算斤讥,就能知道該數(shù)字用二進(jìn)制表示時(shí)纱皆,最后一位是1還是0。
25 = 0000 0000 0000 0000 0000 0000 0001 1001
1 = 0000 0000 0000 0000 0000 0000 0000 0001
---------------------------------------------
AND = 0000 0000 0000 0000 0000 0000 0000 0001 // 結(jié)果
num&1 = 1; // 奇數(shù)
num&1 = 0; // 偶數(shù)
使用按位異或來交換兩個(gè)數(shù)字
let a = 1;
let b = 2;
a^=b;
b^=a;
a^=b;
console.log(a, b) // 2,1
判斷一個(gè)數(shù)字是不是2的n次方
function isPowerOfTwo(num){
return num&( num - 1 ) === 0 && num!== 0
}