>> 비트 오른쪽 시프트 연산자

expression1 >> expression2

expression1expression2를 32비트 정수로 변환하고, expression1의 모든 비트를 expression2를 변환하여 나타나는 정수로 지정된 자릿수만큼 오른쪽으로 이동합니다. 오른쪽 끝으로 이동된 비트는 제거됩니다. 원래 expression의 부호를 유지하려는 경우에는 expression1의 최상위 비트, 즉 가장 왼쪽 비트가 0이면 왼쪽 비트를 0으로 채우고 최상위 비트가 1이면 왼쪽 비트를 1로 채웁니다. 값을 오른쪽으로 한 자리 이동하는 것은 산술적으로 이 값을 2로 나누고 나머지를 버리는 것과 같습니다.

부동 소수점 숫자는 소수점 뒤의 숫자를 제거하여 정수로 변환됩니다. 양의 정수는 최대값이 4294967295 또는 0xFFFFFFFF인 부호 없는 16진수 값으로 변환되고, 최대값보다 큰 값은 변환될 때 32비트 값을 유지하기 위해 최상위 자릿수를 버립니다. 음수는 2의 보수 표기를 사용하여 최소값이 -2147483648 또는 0x800000000인 부호 없는 16진수 값으로 변환되고, 최소값보다 작은 값은 정밀도가 더 높은 2의 보수로 변환된 후 최상위 자릿수를 버립니다.

반환값은 부호 있는 2의 보수로 해석되므로 -2147483648에서 2147483647 범위의 정수가 됩니다.

지원 버전: ActionScript 1.0, Flash Lite 2.0

피연산자

expression1 : Number - 오른쪽으로 이동할 숫자 또는 표현식입니다.

expression2 : Number - 0~31 범위의 정수로 변환되는 숫자 또는 표현식입니다.

반환값

Number - 비트 연산 결과입니다.

예제

다음은 65535를 32비트 정수로 변환하고 오른쪽으로 8비트 이동하는 예제입니다.

var x:Number = 65535 >> 8; 
trace(x); // 255를 출력합니다.

다음 예제에서는 위의 예제의 결과를 보여 줍니다.

var x:Number = 255;

10진수 65535는 이진수 1111111111111111(16개의 1)과 같고, 이진수 1111111111111111을 오른쪽으로 8비트 이동하면 이진수 11111111이 되는데 이진수 11111111은 10진수 255와 같기 때문에 이런 결과가 나타납니다. 이 정수는 32비트이고 0이 채워지므로 최상위 비트는 0이 됩니다.

다음은 -1을 32비트 정수로 변환하고 오른쪽으로 1비트 이동하는 예제입니다.

var x:Number = -1 >> 1;
trace(x); // -1을 출력합니다.

다음 예제에서는 위의 예제의 결과를 보여 줍니다.

var x:Number = -1;

10진수 -1은 이진수 11111111111111111111111111111111(32개의 1)과 같고, 오른쪽으로 1비트 이동하면 가장 오른쪽의 최하위 비트가 버려지고 최상위 비트에는 1이 채워지기 때문에 이런 결과가 나타납니다. 결과는 이진수 11111111111111111111111111111111(32개의 1)이며 이 값은 32비트 정수 -1을 나타냅니다.

참고 사항

>>= 비트 오른쪽 시프트 및 대입 연산자