<< 연산자(Visual Basic)

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

구문

result = pattern << amount  

부분

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

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

amount
필수입니다. 숫자 식입니다. 비트 패턴을 시프트할 비트 수입니다. 데이터 형식은 Integer이거나 Integer로 확장되어야 합니다.

설명

산술 시프트는 원형이 아니으므로 결과의 한쪽 끝에서 이동된 비트가 다른 쪽 끝에서 다시 도입되지 않습니다. 산술 왼쪽 시프트에서는 결과 데이터 형식의 범위를 벗어나 이동된 비트는 폐기되고 오른쪽에 비어 있는 비트 위치는 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 = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1

이전 예제의 결과는 다음과 같습니다.

  • result1은(는) 192(0000 0000 1100 0000)입니다.

  • result2은(는) 3072(0000 1100 0000 0000)입니다.

  • result3은(는) -32768(1000 0000 0000 0000)입니다.

  • result4은(는) 384(0000 0001 1000 0000)입니다.

  • result5이(가) 0입니다(왼쪽으로 15개 위치 이동).

result4의 시프트 양은 17 AND 15로 계산되며 1과 같습니다.

참고 항목