쉬프트 연산자 중 모르던 게 있어서 이 기회에 한꺼번에 정리하려고 한다. 자바의 쉬프트 연산자에는 <<와 >> 그리고 >>> 가 있다.
<< : 비트를 왼쪽으로 이동시킨다. 오른쪽에 비워지는 공간은 0으로 채운다. 따라서 왼쪽으로 쉬프트 할 때마다 수는 2 배씩 증가한다.
>> : 비트를 오른쪽으로 이동시킨다. 먄약 맨 왼쪽 비트가 0이었으면 0으로, 1이었으면 1로 채워진다.
>>> : 비트를 오른쪽으로 이동시키고, 맨 왼쪽 비트는 무조건 0으로 채운다. 또한 >>>는 byte나 short, int, long 타입의 비트를 연산할 때 내부적으로 int로 변환해서 쉬프트 시키고 리턴한다. 따라서 int 가 아닌 다른 자료형으로 받을 경우엔 명시적 형변환을 해주어야 한다. 명시적 형 변환을 해 주면 오른쪽부터 해당 자료형의 크기만큼만 나오게 된다.
또한 최상위 비트가 0으로 채워지기 때문에 음수를 쉬프트해도 형 변환을 해 주지 않고 int로 받으면 무조건 양수가 나온다.
'Java' 카테고리의 다른 글
[Java] java.util.Objects를 이용한 NPE방어 (0) | 2023.06.23 |
---|---|
[Java] Wrapper Class (0) | 2023.06.21 |
[JAVA] getBytes()와 String생성자로 인코딩 디코딩하기 (0) | 2023.06.13 |
getClass() (0) | 2023.06.09 |
clone 메서드의 문제점 (얕은 복사, 깊은 복사) (0) | 2023.06.07 |