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을 사용해야 한다.

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