left shift 연산자 (<<): 값을 왼쪽으로 지정된 비트 수만큼 이동시킵니다. 이동된 비트는 왼쪽에 0으로 채워집니다. 이동된 비트는 해당 값을 2의 거듭제곱으로 곱하는 효과가 있습니다.
right shift 연산자 (>>): 값을 오른쪽으로 지정된 비트 수만큼 이동시킵니다. 이동된 비트는 부호 비트와 동일한 값으로 채워집니다. 양수의 경우 0으로, 음수의 경우 1로 채워집니다. 이동된 비트는 해당 값을 2의 거듭제곱으로 나누는 효과가 있습니다.
unsigned right shift 연산자 (>>>): 값을 오른쪽으로 지정된 비트 수만큼 이동시킵니다. 이동된 비트는 항상 0으로 채워집니다. 이 연산자는 부호 없는 정수형에 대해서만 사용할 수 있습니다.
예시:
int number = 10; int leftShift = number << 2; // 왼쪽 시프트 연산 (10 * 2^2) int rightShift = number >> 1; // 오른쪽 시프트 연산 (10 / 2^1) int unsignedRightShift = number >>> 1; // 부호 없는 오른쪽 시프트 연산 (10 / 2^1) System.out.println(leftShift); // 출력: 40 System.out.println(rightShift); // 출력: 5 System.out.println(unsignedRightShift); // 출력: 5
위의 예시에서, 'number' 변수의 값은 10입니다. 왼쪽 시프트 연산 'number' << 2는 'number'를 왼쪽으로 2비트 이동시키므로 10 * 2^2 = 40이 됩니다.
오른쪽 시프트 연산 'number' >> 1는 'number'를 오른쪽으로 1비트 이동시키므로 10 / 2^1 = 5가 됩니다. 부호 없는 오른쪽 시프트 연산 'number' >>> 1도 동일한 결과를 반환합니다

