

예제에서 대장균 별 형질을 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) 단위로 연산을 수행하는 연산자이다. 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