<< 및 >>는 각각 정수의 비트 왼쪽 시프트와 비트 오른쪽 시프트에 사용되는 비트 시프트 연산자입니다. 왼쪽 이동 연산자(>)는 정수의 이진 표현을 오른쪽으로 이동하여 빈 비트를 부호 비트 또는 0으로 채웁니다.
C++의 <<와 >>의 차이점
C++의 <<(오른쪽 시프트 연산자)는 비트 연산 연산자입니다. , 부호 있는 정수나 부호 없는 정수를 비트 단위로 이동하는 데 사용됩니다. 그들 사이의 주요 차이점은 이동 방향입니다.
왼쪽 시프트 연산자(<<)
왼쪽 시프트 연산자 << 정수의 이진 표현을 지정된 비트 수만큼 왼쪽으로 이동합니다. 정수가 부호 있는 정수인 경우 비워진 비트는 부호 비트로 채워집니다(양수의 경우 0, 음수의 경우 1). 정수가 부호 없는 정수인 경우 비워진 비트는 0으로 채워집니다.
오른쪽 시프트 연산자(>>)
오른쪽 시프트 연산자 >> 정수의 이진 표현을 지정된 자릿수만큼 오른쪽으로 이동합니다. 부호 있는 정수의 경우 부호 비트가 비워진 비트에 복사되어 숫자의 부호가 유지됩니다. 부호 없는 정수의 경우 비어 있는 비트는 0으로 채워집니다.
Usage
왼쪽 시프트 연산자는 일반적으로 정수에 2의 거듭제곱을 곱하는 데 사용됩니다. 이는 이진수 표현에 0을 더하는 것과 같습니다.
int x = 5; // 二进制:101 x << 2; // 二进制:10100 (等效于 x * 2^2)
오른쪽 시프트 연산자는 일반적으로 정수를 2의 거듭제곱으로 나누는 데 사용됩니다. 이는 이진 표현에서 0을 제거하는 것과 동일하기 때문입니다.
int y = 20; // 二进制:10100 y >> 2; // 二进制:101 (等效于 y / 2^2)
예
다음 표에서는 << 부호 있는 정수
20 | 20 | |
---|---|---|
5 << 2 | 20 | 20 |
-5 << 2 | -20 | -20 |
5 >> 2</p>
<td>1</td>
<td>1</td>
<tr>
<td>
<code>-5 >> 2 -20 | -20 |