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

โอเปอเรเตอร์ Left Shift แบบบิตเวิร์ส (<<) ใน JavaScript คืออะไร?


โอเปอเรเตอร์ Left Shift แบบบิตเวิร์ส (<<) เลื่อนบิตของ operand ตัวแรกไปทางซ้ายตามจำนวนบิตที่ระบุโดย operand ตัวที่สอง บิตใหม่ทางขวาจะถูกเติมด้วย 0 เสมอ (Logical Left Shift) บิตที่เลื่อนออกไปทางซ้ายจะหายไป

ตัวอย่างโค้ด

<html>
<body>
  <script>
    var a = 2;  // บิต: 10
    var b = 3;  // เลื่อน 3 บิต
    document.write("(a << b) => ");
    result = (a << b);
    document.write(result); // ผลลัพธ์: 16 (บิต: 10000)
  </script>
</body>
</html>

ความสัมพันธ์กับการคูณ

การเลื่อนซ้าย n บิต เทียบเท่ากับการคูณด้วย 2^n:

  • x << 1 = x * 2
  • x << 2 = x * 4
  • x << 3 = x * 8

กรณีพิเศษและข้อจำกัด

  • Operand จะถูกแปลงเป็น 32-bit signed integer ก่อนดำเนินการ
  • จำนวนบิตที่เลื่อนจะทำ modulo 32 (เช่น << 33 = << 1)
  • อาจเกิด Overflow ได้ หากบิตเครื่องหมาย (MSB) เปลี่ยนค่า
  • สำหรับจำนวนใหญ่ ควรใช้ BigInt แทน (เช่น 2n << 3n)

การประยุกต์ใช้

  • การคูณด้วยกำลังของ 2 อย่างรวดเร็ว
  • การสร้าง Bit Mask (เช่น 1 << n สร้างมาสก์ที่บิต n)
  • การเข้ารหัส/บีบอัดข้อมูลระดับต่ำ
  • การจัดการสีในรูปแบบ RGB (เช่น (r << 16) | (g << 8) | b)