다음을 통해 공유


부호 없이 오른쪽으로 이동 할당 연산자(>>>=)

업데이트: 2007년 11월

변수 값의 부호를 유지하지 않으면서 식의 값으로 지정된 비트 수만큼 오른쪽으로 옮기고 결과를 변수에 할당합니다.

result >>>= expression

인수

  • result
    임의의 숫자 변수입니다.

  • expression
    임의의 숫자 식입니다.

설명

이 연산자를 사용하면 result가 한 번만 계산된다는 점을 제외하고 result = result >>> expression을 지정하는 것과 거의 동일합니다.

>>>= 연산자는 expression에서 지정한 비트 수만큼 result를 오른쪽으로 옮깁니다. 왼쪽에 생긴 공간은 0으로 채우고 오른쪽으로 밀려난 숫자는 버립니다. 이 연산자는 result가 너무 많이 이동하지 않도록 expression을 마스킹합니다. 시프트 횟수가 result의 데이터 형식에 있는 비트 수를 초과하면 원래 비트가 모두 이동하여 결과가 거의 비슷할 것입니다. 각 이동에서 원래 비트를 최소한 하나 이상 남겨 두기 위해 이 이동 연산자는 다음 수식을 사용하여 실제 시프트 횟수를 계산합니다. 즉 비트 논리곱 연산자를 사용하여 result에 있는 비트 수보다 하나 적은 비트 수로 expression을 마스킹합니다.

예제

예를 들면 다음과 같습니다.

var temp
temp = -14
temp >>>= 2

-14(이진수 11111111 11111111 11111111 11110010)를 오른쪽으로 두 비트 옮기면 1073741820(이진수 00111111 11111111 11111111 11111100)이 되므로 temp 변수의 값은 1073741820이 됩니다.

다음 예제에서는 마스킹이 수행되는 방법을 보여 줍니다.

var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
x >>>= 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in x are 00000011
// The value of x is 3
print(x); // Prints 3

요구 사항

버전 1

참고 항목

개념

연산자 우선 순위

연산자 개요

비트 연산자에 의한 강제 변환

참조

부호 없는 오른쪽 시프트 연산자(>>>)

비트 왼쪽 시프트 연산자(<<)

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

할당 연산자(=)