>> 연산자(Visual Basic)
비트 패턴에 산술 오른쪽 시프트를 수행합니다.
구문
result = pattern >> amount
부분
result
필수입니다. 정수 숫자 값입니다. 비트 패턴을 시프트한 결과입니다. 데이터 형식은 pattern
의 데이터 형식과 동일합니다.
pattern
필수입니다. 정수 숫자 식입니다. 시프트할 비트 패턴입니다. 데이터 형식은 정수 형식(SByte
, Byte
, Short
, UShort
, Integer
, UInteger
, Long
또는 ULong
)이어야 합니다.
amount
필수입니다. 숫자 식입니다. 비트 패턴을 시프트할 비트 수입니다. 데이터 형식은 Integer
거나 Integer
로 확장되어야 합니다.
설명
산술 시프트는 원형이 아니므로 결과의 한쪽 끝에서 시프트된 비트가 다른 쪽 끝에서 다시 도입되지 않습니다. 산술 오른쪽 시프트에서는 가장 오른쪽 비트 위치를 넘어 시프트된 비트가 버려지고 가장 왼쪽(기호) 비트가 왼쪽에 비어 있는 비트 위치로 전파됩니다. 즉, pattern
이 음수 값을 갖는 경우 비워진 위치는 1로 설정되고 그렇지 않으면 0으로 설정됩니다.
데이터 형식Byte
, UShort
, UInteger
, ULong
은 부호가 없으므로 전파할 부호 비트가 없습니다. pattern
이 부호 없는 형식인 경우 비워진 위치는 항상 0으로 설정됩니다.
Visual Basic은 결과에서 보유할 수 있는 것보다 많은 비트로 시프트하는 것을 방지하기 위해 pattern
의 데이터 형식에 해당하는 크기 마스크를 사용하여 amount
의 값을 마스크합니다. 이러한 값의 이진 AND는 시프트 양에 사용됩니다. 크기 마스크는 다음과 같습니다.
pattern 의 데이터 형식 |
크기 마스크(10진수) | 크기 마스크(16진수) |
---|---|---|
SByte , Byte |
7 | &H00000007 |
Short , UShort |
15 | &H0000000F |
Integer , UInteger |
31 | &H0000001F |
Long , ULong |
63 | &H0000003F |
amount
가 0이면 result
의 값이 pattern
의 값과 동일합니다. amount
가 음수이면 부호 없는 값으로 사용되며 적절한 크기 마스크로 마스크됩니다.
산술 시프트는 오버플로 예외를 생성하지 않습니다.
오버로딩
>>
연산자는 오버로드될 수 있습니다. 즉, 피연산자가 해당 클래스 또는 구조체 형식을 가질 때 클래스 또는 구조체의 동작을 재정의할 수 있습니다. 코드에서 이러한 클래스나 구조체에 대해 이 연산자를 사용하는 경우 재정의된 동작을 이해해야 합니다. 자세한 내용은 Operator Procedures을 참조하세요.
예시
다음 예제에서는 >>
연산자를 사용하여 정수 값에 대한 산술 오른쪽 시프트를 수행합니다. 결과는 항상 시프트되는 식의 데이터 형식과 동일합니다.
Dim pattern As Short = 2560
' The bit pattern is 0000 1010 0000 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern >> 0
result2 = pattern >> 4
result3 = pattern >> 10
result4 = pattern >> 18
result5 = pattern >> -1
이전 예제의 결과는 다음과 같습니다.
result1
은 2560(0000 1010 0000 0000).입니다.result2
는 160(0000 0000 1010 0000)입니다.result3
은 2(0000 0000 0000 0010)입니다.result4
는 640(0000 0010 1000 0000)입니다.result5
는 0입니다(오른쪽으로 15개 위치 시프트).
result4
의 시프트 양은 18 AND 15로 계산되며 2와 같습니다.
다음 예제에서는 음수 값에 대한 산술 시프트를 보여 줍니다.
Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13
이전 예제의 결과는 다음과 같습니다.
negresult1
은 -512(1111 1110 0000 0000)입니다.negresult2
는 -1입니다(부호 비트가 전파됨).
참고 항목
.NET