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

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


โอเปอเรเตอร์ Right Shift แบบบิตเวิร์ส (>>) เลื่อนบิตของ operand ซ้ายมือไปทางขวาตามจำนวนบิตที่ระบุโดย operand ขวามือ การเลื่อนนี้เป็น Arithmetic Right Shift หมายถึงบิตเครื่องหมาย (sign bit) จะถูกคงไว้ (คือ บิต MSB จะถูกคัดลอกไปเติมทางซ้าย) ทำให้ค่าลบยังคงเป็นลบหลังการเลื่อน

ตัวอย่าง

<html>
<body>
  <script>
    var a = 8;   // บิต: 1000
    var b = 2;   // เลื่อน 2 บิต
    document.write("(a >> b) => ");
    result = (a >> b);
    document.write(result); // ผลลัพธ์: 2 (บิต: 0010)
    
    // ตัวอย่างกับจำนวนลบ
    var c = -8;  // ใน Two's complement
    document.write("<br>(-8 >> 2) => ");
    document.write(c >> 2); // ผลลัพธ์: -2 (คงเครื่องหมายลบ)
  </script>
</body>
</html>

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

การเลื่อนขวา n บิต เทียบเท่ากับการหารด้วย 2^n (ปัดทศนิยมทิ้งสำหรับจำนวนบวก)

  • x >> 1 ≈ Math.floor(x / 2)
  • x >> 2 ≈ Math.floor(x / 4)

กรณีพิเศษ

  • ถ้าจำนวนบิตที่เลื่อนมากกว่าหรือเท่ากับ 32 จะทำ modulo 32 ก่อน (เช่น >> 33 เทียบเท่า >> 1)
  • Operand จะถูกแปลงเป็น 32-bit signed integer ก่อนดำเนินการ