비트 연산자
선수학습(2개)
요약
비트 연산자(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으로 바뀝니다.
unsigned char는 0 ~ 255 범위의 양수만 저장하는 1바이트(8비트) 타입입니다.
참고로 시험에서 int 타입에 ~ 연산을 하면 ~5의 결과가 -6이 됩니다. int는 부호가 있는 32비트 타입이라, 반전된 비트가 음수로 해석되기 때문입니다. 핵심 정리 표의 ~5 = -6이 바로 이 경우입니다.
시프트 연산자 기초
왼쪽 시프트
비트를 왼쪽으로 이동시키고 빈 자리는 0으로 채웁니다.
오른쪽 시프트
비트를 오른쪽으로 이동시킵니다.
시프트 연산자는 비트 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 |
AND: 비교 연산자와 함께 사용
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 |
OR: 비교 연산자와 함께 사용
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 |

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