Android 개발/Kotlin

(1분 읽기) Kotlin 비트 연산자 🚀

안드하는잡스 2024. 7. 1. 15:33

Kotlin에서는 비트 연산자시프트 연산자를 사용해서 이진 데이터를 다룰 수 있어.
복잡한 데이터 처리를 효율적으로 할 수 있고, 코드 가독성도 높여주지.
또한 Kotlin은 infix 함수를 지원해서 가독성까지 챙길 수 있어! 😎


💡 Kotlin 비트 연산자 종류

  • or : 비트 OR (|) - 하나라도 1이면 1
  • and : 비트 AND (&) - 둘 다 1일 때만 1
  • xor : 비트 XOR (^) - 둘 중 하나만 1일 때 1
  • inv : 비트 NOT (~) - 모든 비트를 뒤집음
  • shl : 왼쪽 시프트 (<<) - 비트를 왼쪽으로 이동
  • shr : 오른쪽 시프트 (>>) - 비트를 오른쪽으로 이동
  • ushr : 부호 없는 오른쪽 시프트 - 부호 없이 오른쪽 이동

💡 예제 코드 : 비트 연산 쉽게 이해하기

fun main() {
    val bitwise = 42 // 101010 (2진수)

    println("Original: ${Integer.toBinaryString(bitwise)}") // 101010

    println("OR (35): ${Integer.toBinaryString(bitwise or 35)}") // 111111
    println("AND (35): ${Integer.toBinaryString(bitwise and 35)}") // 10
    println("XOR (35): ${Integer.toBinaryString(bitwise xor 35)}") // 111101
    println("INV: ${Integer.toBinaryString(bitwise.inv())}") // 음수로 나옴 (2의 보수법 때문)

    println("SHL (1): ${Integer.toBinaryString(bitwise shl 1)}") // 1010100
    println("SHR (1): ${Integer.toBinaryString(bitwise shr 1)}") // 10101
    println("USHR (1): ${Integer.toBinaryString(bitwise ushr 1)}") // 10101
}

 

  • or : 두 비트 중 하나라도 1이면 1 → 101010 or 100011 = 111111
  • and : 두 비트가 모두 1일 때만 1 → 101010 and 100011 = 10
  • xor : 두 비트 중 하나만 1일 때 1 → 101010 xor 100011 = 111101
  • inv : 비트를 모두 뒤집음
  • shl, shr, ushr : 비트를 왼쪽 또는 오른쪽으로 이동

🚀 infix 함수 사용으로 가독성 높이기

Kotlin에선 infix 함수를 지원해서 비트 연산자를 더 직관적으로 쓸 수 있어!

fun main() {
    println(1 and 0)  // 0
    println(1 or 0)   // 1
    println(1 xor 0)  // 1
    println(0.inv())  // -1
    println(2 shl 2)  // 8
    println(2 shr 2)  // 0
    println(2 ushr 2) // 0
}
  • and, or, xor 등 연산자를 중위 표기법(infix notation) 으로 사용하면 코드가 더 깔끔해져!

 

📌 요약 정리

비트 연산자로 효율적인 데이터 처리 가능
infix 함수 사용해 가독성 높은 코드 작성
shl, shr, ushr로 비트를 이동시키며 데이터 다루기
✔ Kotlin의 비트 연산자는 정수 타입에서만 사용할 수 있음