더북(TheBook)

2.2.4 비트 연산

IntLong은 비트 수준의 연산을 지원한다.

▼ 표 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부터는 ByteShort에도 or, xor, inv를 호출할 수 있다.

자바 vs. 코틀린 자바에 익숙하다면 비트 연산자 &, |, ^, ~, <<, >>, >>>를 알 텐데, 코틀린은 이런 연산자를 지원하지 않는다. 대신 이에 대응하는 and, or, xor, inv, shl, shr, ushr을 사용해야 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.