[Programmers] 특정 형질을 가지는 대장균 찾기

HAHAHELLO·2025년 2월 27일

SQL

목록 보기
2/17

Lv.1 특정 형질을 가지는 대장균 찾기

문제

예제

나의 풀이

예제에서 대장균 별 형질을 2진수로 나타내는 부분을 참고하여 보면 1번과 3번 형질은 2진수로 각 각 0001과 0100으로 나타낼 수 있다. & 연산자를 사용하면 두 값의 같은 위치의 비트가 모두 1일때만 1을 반환하기 때문에 0001과 0100을 10진수로 변환한 숫자 1과 4를 & 연산자를 사용하여 GENOTYPE과 비교한 값이 1과 4가 나온다면 1번과 3번 형질을 가지고 있는 것이다.

SELECT COUNT(*) AS COUNT
FROM   ECOLI_DATA
WHERE (GENOTYPE & 2) != 2 
AND ((GENOTYPE & 4) = 4 OR (GENOTYPE & 1) = 1)

끄적끄적

Bit 연산자

bit 연산자는 정수형 숫자의 개별 비트(Bit) 단위로 연산을 수행하는 연산자이다. 2진수(0과 1)로 표현된 비트 단위에서 연산이 수행된다.

주요 비트 연산자

  • &, AND: 두 값의 같은 위치의 비트가 모두 1일 때 1을 반환한다.
6 & 3 = 2
0110 & 0011 = 0010
  • |, OR: 두 값의 비트가 서로 다르면 1을 반환한다.
6 | 3 = 7
0110 | 0011 = 0111
  • ^, XOR: 두 값의 비트가 서로 다르면 1을 반환한다.
6 ^ 3 = 5
0110 ^ 0011 = 0101
  • ~, NOT: 일부 DBMS에서 지원되며 1을 0으로, 0을 1로 반전하여 반환한다.
~6 = -7
~0110 = 1001
  • <<: 왼쪽으로 N비트 이동한 값을 반환한다.
6 << 1 = 12
0110 << 1 = 1100
  • >>: 오른쪽으로 N비트 이동한 값을 반환한다.
6 >> 1 = 3
0110 >> 1 = 0011
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글