1001 &
0100
= 0000
즉, 1외 나머지는 이미 0이기 때문에
& 연산 시, 속하지 않으면 전부 0이 되어 버린다.
결국, GENOTYPE & 4의 결과는 항상 0 또는 4인 것.
2번 형질을 보유하지 않은 경우 찾기
=> case & 2 = 0
1번 or 3번 형질을 보유한 경우 찾기
=> case & 1 >= 1 or
case & 4 >= 1
(해석: 3번 형질 자리엔 10진수 4가 온다.)
(왜 1 이상인가? 직관적 표현을 위해 1이상으로 표현했으나 =4로 표현해도 상관 없음. 해당 비트가 켜져 있기만 하면(!=0) 조건 만족)
select count(GENOTYPE) as COUNT
from ECOLI_DATA
where GENOTYPE&2=0 and (GENOTYPE&1>=1 or GENOTYPE&4>=1)
;