TIL
🌱 난 오늘 무엇을 공부했을까?
📌 비트마스크(BitMask)
- 정수를 이진수로 표현하고 비트 연산을 통해 문제를 해결하는 기술
 
📍 장점
- 비트연산을 통한 삽입, 삭제, 조회 등이 간단해짐
 
- 더 간결한 코드 작성이 가능
 
- 더 빠른 연산이 가능
 
- 비트마스크를 이용한 정수 표현으로 다이나믹 프로그래밍이 가능.
 
📍 비트연산
| 종류 | 설명 | 연산자 | 
|---|
| AND | 두 bit 모두 1 이면 1, 아니면 0 | & | 
| OR | 두 bit 중 하나라도 1이면 1 | | | 
| XOR | 두 bit가 서로 다르면 1, 같으면 0 | ^ | 
| NOT | bit가 1이면 0, 0이면 1 | ~ | 
| Left-shift | bit를 왼쪽으로 n칸만큼 옮기고 n칸은 0으로 채운다. | << | 
| Right-shift | bit를 오른쪽으로 n칸만큼 옮기고 n칸은 0으로 채운다. | >> | 
📍 비트 연산 사용
var number = (1<<1) {
    didSet {
        print(number)
        print(bitNumber)
    }
}
var bitNumber: String  {
    String(number, radix: 2)
}
number = number | (1<<3)
number = number & ~(1<<3)
number = number & (1<<3)
number = number ^ (1<<3)