데이터베이스 공부/SQL 일반

SQL: 비트연산자의 이해

모항 2025. 3. 27. 19:24

a = 60, b = 13 이라고 하자.

두 수를 이진수로 변환하면 다음과 같다.

a = 0011 1100

b = 000 1101

이 두 수를 사용한 예와 함께 아래의 비트연산자를 이해해보자.

 

연산자 역할 a, b를 사용한 예
& AND 연산. 두 수 모두에서 1인 자리만 1로 판단한다. a & b = 12
a와 b에서 모두 1인 자리만 1로 표시하면 0000 1100이다.
0000 1100를 십진수로 변환한 12가 결과값으로 도출된다.
| OR 연산. 두 수 중 하나에서라도 1인 자리를 모두 1로 판단한다. a | b = 61
a와 b 중 하나에서라도 1인 자리를 모두 1로 표시하면 0011 1101이다.
0011 1101을 십진수로 변환한 61이 결과값으로 도출된다.
^ XOR 연산. 두 수 중 하나에서만 1인 자리를 모두 1로 판단한다. a ^ b = 49
a와 b 중 하나에서만 1인 자리를 1로 표시하면 0011 0001이다.
0011 0001을 십진수로 변환한 49가 결과값으로 도출된다.
~ NOT 연산. 1을 0으로, 0을 1로 바꾼다. ~a = -61
a = 0011 1100 이므로 ~a = 1100 0011 이다.
이 수를 십진수로 변환한(2의 보수 표기) -61이 결과값으로 도출된다.

*2의 보수로 표기된 음수의 값 구하는 법: 0을 1로, 1을 0으로 바꾼 수에 1을 더한 뒤 -1을 곱한다.
<< LEFT SHIFT 연산. 모든 자리의 수를 왼쪽으로 옮긴 뒤, 오른쪽에 생긴 빈자리를 0으로 채운다. a << 1 = 120
0011 1100 을 1번 LEFT SHIFT하면 0111 1000 이다.
a << 2 = 240
0011 1100 을 2번 LEFT SHIFT하면 1111 0000 이다.
>> RIGHT SHIFT 연산. 모든 자리의 수를 오른쪽으로 옮긴 뒤, 왼쪽에 생긴 빈자리는 가장 왼쪽의 수와 같은 것으로 채운다. a >> 1 = 30
0011 1100 을 1번 RIGHT SHIFT하면 0001 1110 이다.
a >> 2 = 15
0011 1100 을 2번 RIGHT SHIFT하면 0000 1111 이다.

 

 


참고한 글

 

비트 연산자(bitwise operator), 프로그래머스 문제로 이해해 보자.

📌비트 연산자란? SQL 기초 문법만 배운 상태에서 프로그래머스 SQL 고득점 Kit를 풀던 중 처음 보는 연산자를 발견했다. 평소 &(AND)라고 불리는 기호인데, SQL에서는 AND 연산에 사용되고, '비트 연

velog.io