비트마스크(BitMask)

Groot·2023년 1월 18일
0

TIL

목록 보기
127/148
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 비트마스크(BitMask)

  • 정수를 이진수로 표현하고 비트 연산을 통해 문제를 해결하는 기술

📍 장점

  • 비트연산을 통한 삽입, 삭제, 조회 등이 간단해짐
  • 더 간결한 코드 작성이 가능
  • 더 빠른 연산이 가능
  • 비트마스크를 이용한 정수 표현으로 다이나믹 프로그래밍이 가능.

📍 비트연산

종류설명연산자
AND두 bit 모두 1 이면 1, 아니면 0&
OR두 bit 중 하나라도 1이면 1|
XOR두 bit가 서로 다르면 1, 같으면 0^
NOTbit가 1이면 0, 0이면 1~
Left-shiftbit를 왼쪽으로 n칸만큼 옮기고 n칸은 0으로 채운다.<<
Right-shiftbit를 오른쪽으로 n칸만큼 옮기고 n칸은 0으로 채운다.>>

📍 비트 연산 사용

var number = (1<<1) {
    didSet {
        print(number)
        print(bitNumber)
    }
}

var bitNumber: String  {
    String(number, radix: 2)
}


// 원소 추가 : 3번째 수를 추가
number = number | (1<<3)

// 원소 제거 : 3번째 수를 제거
number = number & ~(1<<3)

// 원소 조회 : 3번째 수를 확인 (0이면 없고, 1 이상이면 있음)
number = number & (1<<3)

// 원소 토글 : n번째 수를 켜져 있으면 끄고, 꺼져 있으면 켬 0 -> 1 , 1 -> 0
number = number ^ (1<<3)
profile
I Am Groot

0개의 댓글