[F-Lab 모각코 챌린지 8일차] shift operator
TIL
- shift operator
- left shift
- right shift
- unsigned right shift
shift operator
- 이항 연산자이다.
- 부호비트 유지
- 쉬프트 방향에 따라 1bit 당
x2
또는/2
의 효과 - 자바는 최소 int 단위로 연산을 수행한다.
- shift operator를 비트에서 확인하기 위해서는 4byte(32bit, int형 byte 수)로 변환하여 고려해야한다.
left shift (<<)
- 모든 비트가 지정된 숫자만큼 왼쪽으로 이동한다.
A << B
라고 표시하며 A를 왼쪽으로 B만큼 비트 이동 시키라는 의미이다.- 위 그림은
5 << 2
라고 표시하며 10진수 5를 왼쪽으로 2만큼 비트 이동 시키라는 의미이다. - 부호비트는 유지하고 그 뒤에 있는 2개의 비트를 삭제한다.
- 비트들이 앞으로 당겨지면서 맨 앞에 위치한 비트 2개는 비어지게 되는데 0으로 채운다.
- 💡
A << B
연산의 결과 값은 A * 2^B한 결과와 같다. - 결과값을 구하는 방식이 양수와 음수가 동일하다. (부호유지)
3 << 1
= 6-3 << 1
= -6
right shift (>>)
- 모든 비트가 지정된 숫자만큼 오른쪽으로 이동한다.
A >> B
라고 표시하며 A를 오른쪽으로 B만큼 비트 이동 시키라는 의미이다.- 위 그림은
5 >> 2
라고 표시하며 10진수 5를 오른쪽으로 2만큼 비트 이동 시키라는 의미이다. - 부호비트는 유지하고 그 뒤에 있는 2개의 빈 비트에 부호비트 값을 채운다.
- 비트들이 뒤로 당겨지면서 맨 뒤에 위치한 비트 2개는 삭제된다.
- 💡
A >> B
연산의 결과 값은 A / 2^B한 결과와 같다. - 결과값을 구하는 방식이 양수와 음수가 다르다.
- 부호유지는 똑같음
- 양수는 소수버림, 음수는 소수올림
5 >> 2
= 1 (5 / 4 = 1.25 -> 1)-5 >> 2
= -2 (-5 / 4 = 1.25 -> 2)
unsigned right shift (>>>)
- 부호비트 상관없이 shift를 수행한다.
- 부호비트가 유지되지 않으니 변화가 생길 수 있고 변화에 따라 결과값의 부호가 바뀔 수 있다.
- 위 그림에서도
-128 >>> 2
연산하면 결과값이 32로 부호에 변동이 생겼다. (- -> +)
- 위 그림에서도
예제
System.out.println(5<<2); // 20
System.out.println(5>>2); // 1
System.out.println(-5>>2); // -2
System.out.println(0xffffffff>>>31); // 1(주어진 16진수 값을 2진수로 바꾸면 32비트)
'JAVA' 카테고리의 다른 글
[F-Lab 모각코 챌린지 10일차] 자바가 실수를 다루는 법-2 (BigDecimal) (0) | 2023.06.17 |
---|---|
[F-Lab 모각코 챌린지 9일차] 자바가 실수를 다루는 법-1 (float, double) (0) | 2023.06.16 |
[F-Lab 모각코 챌린지 7일차] Generics (1) | 2023.06.14 |
[F-Lab 모각코 챌린지 6일차] equals(), hashCode() (0) | 2023.06.13 |
[F-Lab 모각코 챌린지 5일차] Call by Value, Call by Reference in Java/어노테이션 (0) | 2023.06.12 |
댓글
이 글 공유하기
다른 글
-
[F-Lab 모각코 챌린지 10일차] 자바가 실수를 다루는 법-2 (BigDecimal)
[F-Lab 모각코 챌린지 10일차] 자바가 실수를 다루는 법-2 (BigDecimal)
2023.06.17 -
[F-Lab 모각코 챌린지 9일차] 자바가 실수를 다루는 법-1 (float, double)
[F-Lab 모각코 챌린지 9일차] 자바가 실수를 다루는 법-1 (float, double)
2023.06.16 -
[F-Lab 모각코 챌린지 7일차] Generics
[F-Lab 모각코 챌린지 7일차] Generics
2023.06.14 -
[F-Lab 모각코 챌린지 6일차] equals(), hashCode()
[F-Lab 모각코 챌린지 6일차] equals(), hashCode()
2023.06.13