부호 없는 오른쪽 시프트 연산자(>>>)란?
JavaScript의 부호 없는 오른쪽 시프트 연산자(>>>)는 일반적인 오른쪽 시프트 연산자(>>)와 유사하지만, 한 가지 중요한 차이점이 있습니다. 바로 왼쪽에서 밀려 들어오는 비트가 항상 0으로 채워진다는 점입니다.
일반적인 >> 연산자는 부호 비트(최상위 비트)를 유지하기 때문에 음수를 시프트하면 결과 역시 음수로 유지됩니다. 반면 >>> 연산자는 부호 비트를 고려하지 않고 왼쪽부터 무조건 0을 채우기 때문에, 어떤 값을 시프트하더라도 결과는 항상 양수 또는 0이 됩니다.
예제
아래 코드를 직접 실행해 보면 부호 없는 오른쪽 시프트 연산자가 실제로 어떻게 동작하는지 확인할 수 있습니다.
<html>
<body>
<script>
var a = -14;
var b = 2; // 오른쪽으로 두 비트 시프트
document.write("(a >>> b) => ");
result = (a >>> b);
document.write(result);
</script>
</body>
</html>
실행 결과 분석
위 예제에서 -14를 오른쪽으로 2비트 시프트하면, 부호 비트와 관계없이 왼쪽이 0으로 채워지므로 결과는 1073741820이 됩니다.
만약 같은 값에 >> 연산자를 사용했다면 부호 비트가 유지되어 결과가 -4로 출력되었을 것입니다. 이처럼 >>> 연산자는 비트 수준에서 데이터를 다룰 때 부호에 영향을 받지 않는 순수한 비트 이동이 필요한 경우에 유용하게 활용됩니다.