본문 바로가기

Algorithm/programmers

[MYSQL] 2진수 관련 비트마스크 연산

SQL에서 비트 연산자는 다음과 같이 사용할 수 있다:

  • & (AND): 두 비트가 모두 1일 때 1, 그렇지 않으면 0
  • | (OR): 두 비트 중 하나라도 1일 때 1, 그렇지 않으면 0
  • ^ (XOR): 두 비트가 다를 때 1, 같을 때 0
  • ~ (NOT): 각 비트를 반전 (0을 1로, 1을 0으로)

활용 방법 중 한가지는, A & B = B가 성립한다면, 이진수 상으로 B가 A에 속해 있다는 의미가 된다.

 

따라서 A & 2^n = 2^n 을 해주면, A를 2진수로 변환했을 때 n+1번째 자리가 1인지 여부를 파악할 수 있다.

 

예시를 들어 설명해보자. 예를 들어 A가 13이고, n이 2일 때를 생각해보자.

  • 13을 2진수로 변환하면 1101이 된다.
  • 2^2는 4이며, 2진수로 0100이 된다.
  • 13 & 4 = 4(0100)이 되므로, 13의 2진수 표현에서 3번째 자리가 1임을 알 수 있다.

이를 통해 SQL에서 비트 연산자를 활용하여 특정 비트가 1인지 확인하는 방법을 알 수 있다.

'Algorithm > programmers' 카테고리의 다른 글

[Python] 멀리 뛰기  (1) 2023.12.22
[Python] N개의 최소공배수  (2) 2023.12.22
[Python] 예상 대진표  (1) 2023.12.22
[Python] n^2 배열 자르기  (1) 2023.12.21
[Python] 구명보트  (1) 2023.12.20