[Kotlin] 비트연산 설명 & 예제
- Language/Kotlin
- 2021. 2. 19.
728x90
비트연산
정수형 변수를 사람이 사용하는 10진법으로 연산하는 대신 2진법인 비트 단위로 연산할 수 있는 기능
- 실무에서는 비트연산을 계산에는 거의 사용하지 않음
- 2진법을 이요한 연산 최적화가 필요하다면 컴파일러의 기능을 사용하는 경우가 대부
분
- 2진법을 이요한 연산 최적화가 필요하다면 컴파일러의 기능을 사용하는 경우가 대부
- 정수형의 값을 비트단위로 나누어 데이터를 좀더 작은 단위로 담아 경제성을 높이기 위한 용도로 사용함
- 32비트에서 5비트 따로 27비트 따로 다른 값을 넣어 사용하는 등
- 변수 하나에 여러개의 값을 담아 사용
- 주로 플래그 값(상태를 0과 1로 담음) 처리 하거나 네트워크 등에서 프로토콜의 데이터량을 줄이기 위해 사용
- 좌측으로 갈수록 상위 비트 우측으로 갈 수록 하위 비트 이다
- 최상위는 부호 비트이기때문에 데이터를 담지 않는 것이 좋다
bitwise shift operators ( 비트를 밀어주는 )
shl(shift left)
: 부호 비트를 제외한 모든 비트를 좌측으로 밀어주는 기능shr(shift right)
: 부호 비트를 제외한 모든 비트를 우측으로 밀어주는 기능ushr(unsigned shift right)
: 부호 비트를 포함한 모든 비트를 우측으로 밀어주는 기능
bitwise operators ( 비트를 조작하는)
and
: 원본과 비교하여 둘다 1인 자리만 1로 반환- 비트를 확인하는 용도
- 원하는 위치에만 1을 넣어 확인
- 비트를 clear하는 연산
- 원하는 자리에 0을 넣어 clear
- 비트를 확인하는 용도
or
: 원본과 비교하여 하나라도 1인 자리면 1로 반환- 비트의 set연산, 즉 비트 값을 1로 설정하고 싶을 때
- 1을 넣어주면 1로 set 가능
- 비트의 set연산, 즉 비트 값을 1로 설정하고 싶을 때
xor
: 비트가 같으면 0, 다른자리는 1로 반환- 비트별로 동일한지 사용
inv() (비트를 반전하는!)
비트를 모두 반전 시키는 역할을 함
fun main() {
//지정되지 않은 상위 비트는 0으로 채워짐
var bitData: Int = 0b10000
bitData = bitData or (1 shl 2)
//10100
println(bitData.toString(2))
var result = bitData and (1 shl 4)
//10000
println(result.toString(2))
//1
println(result shr 4)
bitData = bitData and((1 shl 4).inv())
//100
println(bitData.toString(2))
//10000
println((bitData xor(0b10100)).toString(2))
}
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 코루틴(coroutine)을 통한 비동기 처리 설명 & 예제 (0) | 2021.02.19 |
---|---|
[Kotlin] 변수의 고급 기술(상수, lateinit, lazy) 설명 & 예제 (0) | 2021.02.18 |
[Kotlin] 컬렉션 함수(2) 설명 & 예제 (0) | 2021.02.16 |
[Kotlin] 컬렉션 함수(1) 설명 & 예제 (0) | 2021.02.16 |
[Kotlin] Set & Map 설명 & 예제 (0) | 2021.02.15 |