โอเปอเรเตอร์ 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 ก่อนดำเนินการ