Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

โอเปอเรเตอร์ XOR Assignment (^=) ใน JavaScript คืออะไร?


โอเปอเรเตอร์ 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 ได้ดีกว่า)