다음을 통해 공유


>> 연산자(Visual Basic)

비트 패턴에서 산술 오른쪽 시프트를 수행합니다.

문법

result = pattern >> amount  

부분

result
필수 사항입니다. 정수 숫자 값입니다. 비트 패턴을 이동한 결과입니다. 데이터 형식은 .의 pattern데이터 형식과 동일합니다.

pattern
필수 사항입니다. 정수 숫자 식입니다. 이동할 비트 패턴입니다. 데이터 형식은 정수 형식(SByte,, Byte, Short, UShort, IntegerUInteger, Long또는ULong)이어야 합니다.

amount
필수 사항입니다. 숫자 식입니다. 비트 패턴을 이동할 비트 수입니다. 데이터 형식은 .로 확장Integer해야 Integer 합니다.

비고

산술 시프트는 원형이 아니으므로 결과의 한쪽 끝에서 이동된 비트가 다른 쪽 끝에서 다시 도입되지 않습니다. 산술 오른쪽 시프트에서는 오른쪽 비트 위치를 넘어 이동한 비트가 삭제되고 맨 왼쪽(부호) 비트가 왼쪽에서 비워진 비트 위치로 전파됩니다. 즉, 음수 값이 있으면 pattern 비워진 위치가 1로 설정되고, 그렇지 않으면 0으로 설정됩니다.

데이터 형식Byte, UShortUIntegerULong 부호가 없으므로 전파할 부호 비트가 없습니다. 서명되지 않은 형식인 경우 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

0이면 amount 값이 .의 resultpattern과 동일합니다. 음수이면 amount 부호 없는 값으로 사용되며 적절한 크기 마스크로 마스킹됩니다.

산술 시프트 연산은 오버플로 예외를 생성하지 않습니다.

오버로딩

연산자는 >>오버로드될 수 있습니다. 즉, 피연산자에 해당 클래스 또는 구조체의 형식이 있는 경우 클래스 또는 구조체가 해당 동작을 다시 정의할 수 있습니다. 코드에서 이러한 클래스 또는 구조체에서 이 연산자를 사용하는 경우 다시 정의된 동작을 이해해야 합니다. 자세한 내용은 운영자 프로시저를 참조하세요.

예시

다음 예제에서는 연산자를 >> 사용하여 정수 값에 대한 산술 오른쪽 시프트를 수행합니다. 결과는 항상 이동되는 식의 데이터 형식과 동일합니다.

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 및 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(부호 비트가 전파됨)

참고하십시오