js 位掩碼
阿新 • • 發佈:2020-08-26
定義掩碼
const mask0 = parseInt("00000001", 2); const mask1 = parseInt("00000010", 2); const mask2 = parseInt("00000100", 2); const mask3 = parseInt("00001000", 2); const mask4 = parseInt("00010000", 2); const mask5 = parseInt("00100000", 2); const mask6 = parseInt("01000000", 2); const mask7 = parseInt("10000000", 2);
flags資料
let valueFlags = 1;
檢測掩碼
console.assert(valueFlags & mask0);
設定掩碼flags
valueFlags |= (mask0 | mask1); // valueFlags = valueFlags | (mask0 | mask1) console.assert(valueFlags & mask0 && valueFlags & mask1); valueFlags |= mask7; // valueFlags = valueFlags | mask7 console.assert(valueFlags & mask7)
重設(刪除)掩碼
valueFlags &= ~mask1; // valueFlags = valueFlags & ~mask1 console.assert( !(valueFlags & mask1) ) if ( valueFlags & mask0 && valueFlags & mask7 && !(valueFlags & mask1) && !(valueFlags & mask2) && !(valueFlags & mask3) && !(valueFlags & mask4) && !(valueFlags & mask5) && !(valueFlags & mask6) ) { console.log("success"); }
切換狀態
valueFlags ^= mask0;
console.assert(!(valueFlags & mask0));
valueFlags ^= mask0;
console.assert(valueFlags & mask0);