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

expression << expression
expression >> expression

설명

비트 시프트 연산자는 다음과 같습니다.

  • 오른쪽 시프트 (>>)

  • 왼쪽된 시프트 (<<)

시프트 연산자의 피연산자가 모두 정수 계열 형식 이어야 합니다.정수 계열 홍보 수행에 설명 된 규칙에 따라 정수 계열 홍보.결과의 형식은 승격된 왼쪽된 피연산자의 형식과 동일합니다.값 오른쪽 시프트 식 x >> y x / 2y, x는 왼쪽 시프트 식의 값과 << y is x * 2y.

오른쪽 시프트 식의 피연산자가 음수 이면 또는 오른쪽 피연산자는 왼쪽된 피연산자 (승격된)에 비트 개수 보다 크거나 경우 결과가 정의 되지 않습니다.오른쪽 피연산자가 0 이면 shift 연산이 수행 되지 않습니다.

왼쪽 시프트 연산자는 첫째 피연산자를 둘째 피연산자에서 지정한 비트 수 만큼 왼쪽으로 이동 하는 비트 패턴이 됩니다.비트 시프트 연산에 의해 비워진 0으로 채워집니다.Shift 키 및 회전 작업 대신 논리 시프트입니다.

오른쪽 시프트 연산자는 첫째 피연산자를 둘째 피연산자에서 지정한 비트 수 만큼 오른쪽으로 이동할 비트 패턴이 됩니다.비트 시프트 연산에 의해 비워진 부호 없는 수량을 0으로 채워진 됩니다.서명 된 수량에 대 한 부호 비트의 비워진된 비트 위치로 전파 됩니다.왼쪽된 피연산자가 부호 없는 수량 경우 교대조의 논리 시프트입니다. 그렇지 않으면 그는 산술 시프트입니다.

Microsoft 전용

결과 음의 수량 부호 있는 오른쪽 시프트는 구현에 따라 다릅니다.하지만 MicrosoftC++ 전파 비워진된 비트 위치를 채우기 위해 가장 중요 한 비트가 다른 구현도 그렇게 됩니다 있다는 보장은 없습니다.

예제

// expre_Shift_Operators.cpp
// compile with: /EHsc
// Demonstrate shift operators
#include <iostream>
using namespace std;

int main() {
   cout   << "5 times 2 is " << (5 << 1) << endl
         << "20 divided by 4 is " << (20 >> 2) << endl;
}

Output

  
  

참고 항목

참조

이항 연산자 식

C + + 연산자

연산자 우선 순위 및 결합성

개념

비트 시프트 연산자