2.2.4 비트 연산
Int와 Long은 비트 수준의 연산을 지원한다.
▼ 표 2-4 비트 연산
연산 |
뜻 |
예제 |
결과 |
해당하는 자바 연산 |
shl |
왼쪽 시프트(shift) |
13 shl 2 (-13) shl 2 |
52: 0...00110100 -52: 1...11001100 |
<< |
shr |
오른쪽 시프트 |
13 shr 2 (-13) shr 2 |
3: 0...00000011 -4: 1...11111100 |
<< |
ushr |
부호 없는 오른쪽 시프트 |
13 ushr 2 (-13) ushr 2 |
3: 0...00000011 1073741820: 001...111100 |
>>> |
and |
비트 곱(AND) |
13 and 19 -13 and 19 |
1: 0...00000001 19: 0...00010011 |
& |
or |
비트 합(OR) |
13 or 19 -13 or 19 |
31: 0...00011111 -13: 1...11110011 |
| |
xor |
비트 배타합(XOR) |
13 xor 19 -13 xor 19 |
30: 0...00011110 -32: 1...11100000 |
^ |
inv |
비트 반전(inversion) |
13.inv() (-13).inv() |
-14: 1...11110010 12: 0...00001100 |
~ |
비고: 각 수의 이진 표현은 다음과 같다. 13: 0...00001101 -13: 1...11110011 19: 0...00010011 |
inv는 이항 연산이나 단항 연산이 아니라 점 표기법으로 호출하는 메서드일 뿐이라는 점에 유의하라.
코틀린 1.1부터는 Byte와 Short에도 or, xor, inv를 호출할 수 있다.
자바 vs. 코틀린 자바에 익숙하다면 비트 연산자 &, |, ^, ~, <<, >>, >>>를 알 텐데, 코틀린은 이런 연산자를 지원하지 않는다. 대신 이에 대응하는 and, or, xor, inv, shl, shr, ushr을 사용해야 한다.