다음을 통해 공유


비트 시프트 연산자

시프트 연산자는 첫째 피연산자를 왼쪽 시프트 (<<) 또는 오른쪽 (>>) 두 번째 피연산자의 위치 번호로 지정 합니다.

구문

  • 시프트 식:
    가감 연산자 식

    시프트 식<<조금 식 시프트 식>>조금 식

두 피연산자가 모두 정수 계열 값 이어야 합니다.이러한 연산자는 일반적인 산술 변환이 수행합니다. 결과 형식은 형식 피연산자 변환 후입니다.

Leftward 변화를 오른쪽의 비워진된 비트 0으로 설정 됩니다.Rightward 변화에 대 한 변환 후 왼쪽된의 비워진된 비트는 첫 번째 피연산자의 형식을 기준으로 입력 됩니다.형식이 경우 unsigned를 0으로 설정 합니다.그렇지 않은 경우 부호 비트 복사본으로 채웁니다.왼쪽 시프트 연산자에 대 한 오버플로 문의 하지 않고

expr1 << expr2 

곱하기 2입니다expr2.오른쪽 시프트 연산자에 대 한

expr1 >> expr2 

2 나눔에에expr2 경우 expr1 서명 되지 않은 또는 음수가 아닌 값입니다.

두 번째 피연산자가 음수일 경우 나 오른쪽 피연산자 보다 크거나 너비에 승격된 왼쪽된 피연산자의 비트에서 이면 shift 연산의 결과가 정의 되지 않습니다.

변환이 수행 된 후 시프트가 오버플로 대 한 연산자를 제공 하지 않습니다 또는 shift 연산의 결과 첫 번째 피연산자의 형식에서 변환 후 나타낼 수 없으면 언더플로가 조건, 정보가 손실 될 수 있습니다.

unsigned int x, y, z;

x = 0x00AA;
y = 0x5500;

z = ( x << 8 ) + ( y >> 8 );

이 예제에서 x 8 개 만큼 왼쪽으로 이동 됩니다 및 y 8 오른쪽 위치로 이동된 됩니다.0XAA55, 할당 및 아래로 값 추가 z.

음수 값은 오른쪽으로 이동 버림 절반 원래 값을 얻을 수 있습니다.예를 들어, –253 (이진 11111111 00000011) 오른쪽 1 비트 생성 매핑되지만 (이진 11111111 10000001)으로 이동 합니다.긍정 253 교대를 마우스 오른쪽 단추로 +126을 생성 합니다.

오른쪽 시프트는 부호 비트를 보존합니다.최상위 비트는 부호 있는 정수를 오른쪽으로 이동 하면 설정 상태가 유지 됩니다.최상위 비트는 부호 없는 정수를 오른쪽으로 이동 하면 지워집니다.

참고 항목

참조

시프트 연산자: >> 및 <<