비트 오른쪽 시프트 연산자(>>)
업데이트: 2007년 11월
부호를 유지하면서 식을 비트 단위로 오른쪽으로 이동합니다.
expression1 >> expression2
인수
expression1
임의의 숫자 식입니다.expression2
임의의 숫자 식입니다.
설명
>> 연산자는 expression1의 비트를 expression2에 지정된 비트 수만큼 오른쪽으로 이동합니다. 왼쪽에 생긴 공간은 expression1의 부호 비트로 채우고 오른쪽으로 밀려난 숫자는 버립니다. 이 연산자에서 반환되는 데이터 형식은 expression1의 데이터 형식에 따라 결정됩니다.
>> 연산자는 expression1이 너무 많이 이동하지 않도록 expression2를 마스킹합니다. 시프트 횟수가 expression1의 데이터 형식에 있는 비트 수를 초과하면 원래 비트가 모두 이동하여 결과가 거의 비슷할 것입니다. 각 이동에서 원래 비트를 최소한 하나 이상 남겨 두기 위해 이 이동 연산자는 다음 수식을 사용하여 실제 시프트 횟수를 계산합니다. 즉 비트 논리곱 연산자를 사용하여 expression1에 있는 비트 수보다 하나 적은 비트 수로 expression2를 마스킹합니다.
예제
예를 들어, 다음 코드를 계산하면 -14(이진수 11110010)를 오른쪽으로 두 비트 옮겨 -4(이진수 11111100)가 되므로 temp의 값은 -4가 됩니다.
var temp
temp = -14 >> 2
다음 예제에서는 마스킹이 수행되는 방법을 보여 줍니다.
var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
var y : byte = x >> 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in y are 00000011
// The value of y is 3
print(y); // Prints 3