비트 연산자
요약
비트 연산자(AND, OR, XOR, NOT, 시프트)를 알아봅니다. 정보처리기사 실기에 자주 출제되는 비트 연산 문제를 풀기 위한 핵심 개념을 정리합니다.
비트란?
비트(bit) 는 컴퓨터가 다루는 가장 작은 데이터 단위로, 0 또는 1 값만 가집니다.
모든 숫자는 컴퓨터 내부에서 비트의 조합()으로 저장됩니다. 실기 시험에서는 16진수(0xA5 등)로 표기된 값을 2진수로 변환해서 계산하는 문제가 자주 출제됩니다.
비트 연산자는 이 비트들을 직접 조작하는 연산자입니다.
비트 연산자 핵심 정리
| 연산자 | 이름 | 설명 | 예시 |
|---|---|---|---|
& | AND | 둘 다 1이면 1 | 5 & 3 = 1 |
| | OR | 하나라도 1이면 1 | 5 | 3 = 7 |
^ | XOR | 서로 다르면 1 | 5 ^ 3 = 6 |
~ | NOT | 비트 반전 | ~5 = -6 |
<< | 왼쪽 시프트 | 비트를 왼쪽으로 이동 | 5 << 1 = 10 |
>> | 오른쪽 시프트 | 비트를 오른쪽으로 이동 | 5 >> 1 = 2 |
XOR 연산자 (^)
XOR(배타적 논리합) 연산은 두 비트가 서로 다를 때 1을 반환합니다.
| A | B | A ^ B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
XOR 계산 예시
계산 과정:

AND 연산자 (&)
AND 연산은 두 비트가 모두 1일 때만 1을 반환합니다.
| A | B | A & B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
OR 연산자 (|)
OR 연산은 두 비트 중 하나라도 1이면 1을 반환합니다.
| A | B | A | B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
NOT 연산자 (~)
NOT 연산은 모든 비트를 반전시킵니다. 0은 1로, 1은 0으로 바뀝니다.
시프트 연산자
왼쪽 시프트
비트를 왼쪽으로 이동시키고 빈 자리는 0으로 채웁니다. n칸 왼쪽 시프트는 2^n을 곱하는 것과 같습니다.
오른쪽 시프트
비트를 오른쪽으로 이동시킵니다. n칸 오른쪽 시프트는 2^n으로 나누는 것과 같습니다.
시프트 연산자는 비트 AND/OR 연산자보다 우선순위가 높습니다.
a & b >> 1은a & (b >> 1)로 계산됩니다.
비트 연산자 핵심 정리
| 연산자 | 이름 | 설명 | 예시 (boolean) |
|---|---|---|---|
& | AND | 둘 다 true면 true | true & false = false |
| | OR | 하나라도 true면 true | true | false = true |
^ | XOR | 서로 다르면 true | true ^ false = true |
! | NOT | 반대로 뒤집기 | !true = false |
비트 연산자란?
비트 연산자는 원래 숫자의 비트(0과 1)를 직접 조작하는 연산자입니다. 하지만 Java에서는 boolean 값(true/false)에도 사용할 수 있습니다.
정보처리기사 실기에서 Java 비트 연산자 문제는 주로 boolean(true/false) 값에 비트 연산자를 사용하는 형태로 출제됩니다.
AND 연산자 (&)
AND 연산은 둘 다 true일 때만 true를 반환합니다.
| A | B | A & B |
|---|---|---|
| false | false | false |
| false | true | false |
| true | false | false |
| true | true | true |
비교 연산자와 함께 사용
a == 3은 true, b == 4도 true이므로 true & true = true입니다.
OR 연산자 (|)
OR 연산은 둘 중 하나라도 true면 true를 반환합니다.
| A | B | A | B |
|---|---|---|
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | true |
비교 연산자와 함께 사용
a == 2는 false지만, a == c가 true이므로 false | true = true입니다.
XOR 연산자 (^)
XOR(배타적 논리합) 연산은 두 값이 서로 다를 때 true를 반환합니다.
| A | B | A ^ B |
|---|---|---|
| false | false | false |
| false | true | true |
| true | false | true |
| true | true | false |

비교 연산자와 함께 사용
1 == b는 false, c != d는 true이므로 false ^ true = true (서로 다르므로)입니다.
NOT 연산자 (!)
NOT 연산은 boolean 값을 반대로 뒤집습니다.
| A | !A |
|---|---|
| true | false |
| false | true |
비교 연산자와 함께 사용
c > d는 3 > 5이므로 false입니다. NOT 연산으로 뒤집으면 true가 됩니다.
비트 연산자 vs 논리 연산자
Java에서는 비슷한 역할을 하는 두 종류의 연산자가 있습니다.
| 비트 연산자 | 논리 연산자 | 차이점 |
|---|---|---|
& | && | &는 양쪽 모두 평가, &&는 왼쪽이 false면 오른쪽 평가 안 함 |
| | || | |는 양쪽 모두 평가, ||는 왼쪽이 true면 오른쪽 평가 안 함 |
비트 연산자 핵심 정리
| 연산자 | 종류 | 설명 | 예시 | 결과 |
|---|---|---|---|---|
>> | 비트 오른쪽 시프트 | 비트를 오른쪽으로 n칸 이동 (2^n으로 나누기) | 100 >> 1 | 50 |
<< | 비트 왼쪽 시프트 | 비트를 왼쪽으로 n칸 이동 (2^n을 곱하기) | 100 << 1 | 200 |
& | AND | 둘 다 1이면 1 | 5 & 3 | 1 |
| | OR | 하나라도 1이면 1 | 5 | 3 | 7 |
^ | XOR | 서로 다르면 1 | 5 ^ 3 | 6 |
비트 시프트 연산자
비트 시프트 연산자는 숫자의 비트를 왼쪽 또는 오른쪽으로 이동시킵니다.
오른쪽 시프트 (>>)
n칸 오른쪽 시프트는 2^n으로 나누는 것과 같습니다. 비트를 오른쪽으로 이동시키고 빈 자리는 0으로 채웁니다.
이진수로 확인:
왼쪽 시프트 (<<)
n칸 왼쪽 시프트는 2^n을 곱하는 것과 같습니다. 비트를 왼쪽으로 이동시키고 빈 자리는 0으로 채웁니다.
| 시프트 | 의미 | 계산 |
|---|---|---|
a >> 1 | a / 2 | 2^1 = 2로 나누기 |
a >> 2 | a / 4 | 2^2 = 4로 나누기 |
a << 1 | a * 2 | 2^1 = 2를 곱하기 |
a << 2 | a * 4 | 2^2 = 4를 곱하기 |
논리 연산자
논리 연산자는 여러 조건을 조합할 때 사용합니다.
| 연산자 | 설명 | 예시 | 결과 |
|---|---|---|---|
and | 두 조건 모두 True이면 True | True and False | False |
or | 하나라도 True이면 True | True or False | True |
not | True를 False로, False를 True로 반전 | not True | False |
복합 대입 연산자
복합 대입 연산자는 연산과 대입을 한 번에 수행합니다.
| 연산자 | 의미 | 예시 |
|---|---|---|
+= | 더하고 대입 | a += 5 |
-= | 빼고 대입 | a -= 5 |
*= | 곱하고 대입 | a *= 2 |
//= | 정수 나누고 대입 | a //= 2 |
%= | 나머지 대입 | a %= 3 |
>>= | 오른쪽 시프트 후 대입 | a >>= 1 |