โอเปอเรเตอร์ AND แบบบิตเวิร์ส (&) ทำการดำเนินการ Boolean AND บนแต่ละบิตของอินจิเจอร์สองตัว ผลลัพธ์จะเป็น 1 ก็ต่อเมื่อทั้งสองบิตเป็น 1 หากบิตใดบิตหนึ่งเป็น 0 ผลลัพธ์จะเป็น 0
ตารางความจริง
| A | B | A & B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
ตัวอย่างโค้ด
<html>
<body>
<script>
var a = 2; // บิต: 10
var b = 3; // บิต: 11
document.write("(a & b) => ");
result = (a & b);
document.write(result); // ผลลัพธ์: 2 (บิต: 10)
</script>
</body>
</html>
การประยุกต์ใช้หลัก
1. Bit Masking (การปิดบังบิต)
ใช้ตรวจสอบหรือล้างบิตเฉพาะ:
// ตรวจสอบบิตที่ 3 (นับจาก 0)
var flag = 5; // 101
var mask = 4; // 100 (บิตที่ 3)
if (flag & mask) { /* บิตที่ 3 เป็น 1 */ }
// ล้างบิตที่ 3
flag = flag & ~mask; // 101 & 011 = 001
2. ตรวจสอบเลขคู่/คี่
function isEven(n) {
return (n & 1) === 0; // บิต LSB เป็น 0 = คู่
}
3. การคำนวณ Modulo กำลังของ 2
// x % 8 เทียบเท่า x & 7 (เร็วกว่า) var result = x & 7; // 7 = 0b111
4. การแปลงสี RGB
var color = 0xFF3366; var r = (color & 0xFF0000) >> 16; // 255 var g = (color & 0x00FF00) >> 8; // 51 var b = color & 0x0000FF; // 102
ข้อควรระวัง
JavaScript แปลง operand เป็น 32-bit signed integer ก่อนคำนวณ ผลลัพธ์จึงอยู่ในช่วง -2,147,483,648 ถึง 2,147,483,647