JAVA의 쉬프트 연산자

이승우·2023년 6월 11일

JAVA

목록 보기
7/14
post-thumbnail

비트 쉬프트(shift) 연산자

  • 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도 동일한 결과를 반환합니다

20<<2

profile
🧑🏻‍💻

0개의 댓글