1. 程式人生 > 實用技巧 >js 位掩碼

js 位掩碼

定義掩碼

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);