โอเปอเรเตอร์ XOR Assignment (^=) เป็น Compound Assignment Operator ที่ทำการ XOR แบบบิตเวิร์สระหว่าง operand ซ้ายและขวา แล้วกำหนดผลลัพธ์กลับให้ operand ซ้าย
ไวยากรณ์
x ^= y // เทียบเท่า x = x ^ y
ตัวอย่างโค้ด
<html>
<body>
<script>
var a = 2; // บิต: 10
var b = 3; // บิต: 11
document.write("(a ^= b) => ");
document.write(a ^= b); // a = a ^ b = 1 (บิต: 01)
</script>
</body>
</html>
การคำนวณแบบทีละขั้นตอน
a = 2 // 0010 b = 3 // 0011 a ^ b // 0001 = 1 a กลายเป็น 1
การประยุกต์ใช้หลัก: สลับค่าตัวแปรสองตัว (XOR Swap)
สลับค่า a และ b โดยไม่ต้องใช้ตัวแปรชั่วคราว:
var a = 10, b = 20; a ^= b; // a = 10 ^ 20 = 30 b ^= a; // b = 20 ^ 30 = 10 (ค่าเดิมของ a) a ^= b; // a = 30 ^ 10 = 20 (ค่าเดิมของ b) // ตอนนี้ a=20, b=10
คุณสมบัติของ XOR
- Commutative:
a ^ b === b ^ a - Associative:
(a ^ b) ^ c === a ^ (b ^ c) - Self-inverse:
a ^ a === 0,a ^ 0 === a - Undoable:
(a ^ b) ^ b === a
การประยุกต์ใช้อื่นๆ
- Bit Toggling:
flags ^= MASKสลับสถานะบิตใน Flag - Simple Encryption:
encrypted = data ^ keyถอดรหัสด้วยencrypted ^ key - Parity Check: ตรวจสอบจำนวนบิต 1 เป็นคู่/คี่
ข้อจำกัด
- ทำงานกับ 32-bit Signed Integer เท่านั้น (แปลงอัตโนมัติ)
- ไม่เหมาะกับ Floating Point หรือ BigInt (ใช้
BigIntแทน) - XOR Swap ใน JS ช้ากว่าการใช้ตัวแปรชั่วคราวสมัยใหม่ (Engine Optimize ได้ดีกว่า)