코틀린

[Youtube DiMo] 30강. 비트연산

iseohyun 2022. 5. 3.

목차

    [30강] https://youtu.be/yCfEDF9KP3k

     

     

    1. 비트연산

    fun main() {
        var bit1 = 0b001101
        var bit2 = 0b010100
        
        printBinary(bit1)
        printBinary(bit2)
    
        println()
        printBinary(bit1 and bit2)
        printBinary(bit1 or bit2)
        printBinary(bit1 xor bit2)
        
        println()
    	printBinary(bit1 shl 3)
        printBinary(bit1 shr 1)
    }
    
    // (i=2진수로 변환할 데이터, minLen=출력할 최소 자릿수(8))
    // xxxxxxxx(10진수)
    fun printBinary(i: Int, minLen: Int = 8){
        var l = minLen - i.toString(2).length
        while(l!=0){
            print("0")
            l--
        }
        println(i.toString(2) + "(" + i.toString() + ")")
    }
    00001101(13)
    00010100(20)
    
    00000100(4)
    00011101(29)
    00011001(25)
    
    01101000(104)
    00000110(6)

     

    2. inv (Not, 비트 뒤집기)

    inv()가 toString()으로 출력이 어려워서 만든 억지 예제
    int()를 호출하면 0과 1이 각각 1과 0으로 변경된다는 것만 기억하면 됨

    fun main() {
        var bit1 = 0b0010000
        println(bit1)
        println(bit1.toString(2))
        println(bit1.inv()) // 변경한 수를 10진수로 읽는다.
        println(bit1.inv().toString(2)) // 부호를 출력하고 10진수 17을 2진수로 변경한다.
        
        val r = bit1.inv() and 0b11111111
        print(r.toString(2))
    }
    16
    10000
    -17
    -10001
    11101111

    댓글