JavaScript中的數字都按照IEEE-754(Institute of Electrical and Electronics Engineers)標準以64位格式存儲。在位操做中,數字被轉換爲有符號32位格式。每次運算符會直接操做該32位數以獲得結果。雖然須要轉換,但這個過程與JavaScript其餘數學運算和布爾操做相比要快不少。javascript
兩個操做數的對應位都是1時,則在該位置返回1。java
兩個操做數的對應位只要一個爲1時,則在該位返回1。數組
兩個操做數的對應位只有一個爲1,則在該位返回1。code
遇0則返回1,反之亦然。ip
32位數字的二進制底層表示,偶數的最低位是0,奇數的最低位是1。若是此數爲偶數,和1按位與的結果是0;若是此數爲奇數,和1按位與的結果是1。能夠使用該方法實現顏色交替,效率可能會比純數學運算(如,取模)快50%。數學
for (let i = Things.length - 1; i >= 0; i--) { if(i & 1) { className = 'oddColor'; }else { className = 'evenColor'; } }
位掩碼用於處理同時存在多個布爾選項的情形。使用單個數字的每一位來斷定選項是否成立,從而有效地把數字轉換爲由布爾值標記組成的數組。掩碼中的每一個選項的值都等於2的冪。it
const OPTION_A = 1; const OPTION_B = 2; const OPTION_C = 4; const options = OPTION_A | OPTION_B; // 選項A是否在options中 if(options & OPTION_A) { // code here } // 選項A是否在options中 if(options & OPTION_B) { // code here } // 選項A是否在options中 if(options & OPTION_C) { // code here }