비트 연산자

코딩C언어JavaPython
읽는데 9분 소요
처음 쓰여진 날: 2026-02-03
마지막 수정일: 2026-03-21
조회수:

요약

비트 연산자(AND, OR, XOR, NOT, 시프트)를 알아봅니다. 정보처리기사 실기에 자주 출제되는 비트 연산 문제를 풀기 위한 핵심 개념을 정리합니다.

비트란? 쌩기초

비트(bit)는 컴퓨터가 다루는 가장 작은 데이터 단위로, 0 또는 1 값만 가집니다.

모든 숫자는 컴퓨터 내부에서 비트의 조합(이진수)으로 저장됩니다. 실기 시험에서는 16진수(0xA5 등)로 표기된 값을 2진수로 변환해서 계산하는 문제가 자주 출제됩니다.

text
코드 하이라이팅 중...

비트 연산자는 이 비트들을 직접 조작하는 연산자입니다.


비트 연산자 핵심 정리

연산자이름설명예시
&AND둘 다 1이면 15 & 3 = 1
|OR하나라도 1이면 15 | 3 = 7
^XOR서로 다르면 15 ^ 3 = 6
~NOT비트 반전~5 = -6
<<왼쪽 시프트비트를 왼쪽으로 이동5 << 1 = 10
>>오른쪽 시프트비트를 오른쪽으로 이동5 >> 1 = 2

XOR 연산자 (^) 기초

XOR(배타적 논리합) 연산은 두 비트가 서로 다를 때 1을 반환합니다.

ABA ^ B
000
011
101
110

XOR 계산 예시

c
코드 하이라이팅 중...

계산 과정:

text
코드 하이라이팅 중...
XOR 연산
XOR 연산은 두 비트가 다를 때만 1이 됩니다. 127 ^ 42 = 85

AND 연산자 (&) 기초

AND 연산은 두 비트가 모두 1일 때만 1을 반환합니다.

ABA & B
000
010
100
111
c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

OR 연산자 (|) 기초

OR 연산은 두 비트 중 하나라도 1이면 1을 반환합니다.

ABA | B
000
011
101
111
c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

NOT 연산자 (~) 기초

NOT 연산은 모든 비트를 반전시킵니다. 0은 1로, 1은 0으로 바뀝니다.

unsigned char는 0 ~ 255 범위의 양수만 저장하는 1바이트(8비트) 타입입니다.

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

참고로 시험에서 int 타입에 ~ 연산을 하면 ~5의 결과가 -6이 됩니다. int는 부호가 있는 32비트 타입이라, 반전된 비트가 음수로 해석되기 때문입니다. 핵심 정리 표의 ~5 = -6이 바로 이 경우입니다.


시프트 연산자 기초

왼쪽 시프트

비트를 왼쪽으로 이동시키고 빈 자리는 0으로 채웁니다.

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

오른쪽 시프트

비트를 오른쪽으로 이동시킵니다.

c
코드 하이라이팅 중...
text
코드 하이라이팅 중...

시프트 연산자는 비트 AND/OR 연산자보다 우선순위가 높습니다. a & b >> 1a & (b >> 1)로 계산됩니다.

비트 연산자 핵심 정리

연산자이름설명예시 (boolean)
&AND둘 다 true면 truetrue & false = false
|OR하나라도 true면 truetrue | false = true
^XOR서로 다르면 truetrue ^ false = true
!NOT반대로 뒤집기!true = false

비트 연산자란? 쌩기초

비트 연산자는 원래 숫자의 비트(0과 1)를 직접 조작하는 연산자입니다. 하지만 Java에서는 boolean 값(true/false)에도 사용할 수 있습니다.

정보처리기사 실기에서 Java 비트 연산자 문제는 주로 boolean(true/false) 값에 비트 연산자를 사용하는 형태로 출제됩니다.

java
코드 하이라이팅 중...

AND 연산자 (&) 기초

AND 연산은 둘 다 true일 때만 true를 반환합니다.

ABA & B
falsefalsefalse
falsetruefalse
truefalsefalse
truetruetrue
java
코드 하이라이팅 중...

AND: 비교 연산자와 함께 사용

java
코드 하이라이팅 중...

a == 3은 true, b == 4도 true이므로 true & true = true입니다.


OR 연산자 (|) 기초

OR 연산은 둘 중 하나라도 true면 true를 반환합니다.

ABA | B
falsefalsefalse
falsetruetrue
truefalsetrue
truetruetrue
java
코드 하이라이팅 중...

OR: 비교 연산자와 함께 사용

java
코드 하이라이팅 중...

a == 2는 false지만, a == c가 true이므로 false | true = true입니다.


XOR 연산자 (^) 기초

XOR(배타적 논리합) 연산은 두 값이 서로 다를 때 true를 반환합니다.

ABA ^ B
falsefalsefalse
falsetruetrue
truefalsetrue
truetruefalse
java
코드 하이라이팅 중...
Java 비트 연산자 진리표
비트 연산자 진리표: AND는 둘 다 true면 true, OR은 하나만 true면 true, XOR은 서로 다르면 true

XOR: 비교 연산자와 함께 사용

java
코드 하이라이팅 중...

1 == b는 false, c != d는 true이므로 false ^ true = true (서로 다르므로)입니다.


NOT 연산자 (!) 기초

NOT 연산은 boolean 값을 반대로 뒤집습니다.

A!A
truefalse
falsetrue
java
코드 하이라이팅 중...

NOT: 비교 연산자와 함께 사용

java
코드 하이라이팅 중...

c > d3 > 5이므로 false입니다. NOT 연산으로 뒤집으면 true가 됩니다.


시프트 연산자 기초

시프트 연산자는 숫자의 비트를 왼쪽 또는 오른쪽으로 이동시킵니다. Java에서도 C언어와 동일하게 <<>>를 사용합니다.

왼쪽 시프트 (<<)

비트를 왼쪽으로 이동시키고 빈 자리는 0으로 채웁니다.

java
코드 하이라이팅 중...
text
코드 하이라이팅 중...

오른쪽 시프트 (>>)

비트를 오른쪽으로 이동시킵니다.

java
코드 하이라이팅 중...
text
코드 하이라이팅 중...
시프트의미계산
a << 1a x 22를 곱하기
a << 2a x 44를 곱하기
a >> 1a / 22로 나누기
a >> 2a / 44로 나누기

비트 연산자 핵심 정리

연산자종류설명예시결과
>>비트 오른쪽 시프트비트를 오른쪽으로 n칸 이동 (n칸당 ÷2)100 >> 150
<<비트 왼쪽 시프트비트를 왼쪽으로 n칸 이동 (n칸당 ×2)100 << 1200
&AND둘 다 1이면 15 & 31
|OR하나라도 1이면 15 | 37
^XOR서로 다르면 15 ^ 36

비트 시프트 연산자 기초

비트 시프트 연산자는 숫자의 비트를 왼쪽 또는 오른쪽으로 이동시킵니다.

오른쪽 시프트 (>>)

비트를 오른쪽으로 이동시키고 빈 자리는 0으로 채웁니다.

python
코드 하이라이팅 중...

이진수로 확인:

text
코드 하이라이팅 중...

왼쪽 시프트 (<<)

비트를 왼쪽으로 이동시키고 빈 자리는 0으로 채웁니다.

python
코드 하이라이팅 중...
시프트의미계산
a >> 1a / 22로 나누기
a >> 2a / 44로 나누기
a << 1a × 22를 곱하기
a << 2a × 44를 곱하기

AND 연산자 (&) 기초

AND 연산은 두 비트가 모두 1일 때만 1을 반환합니다.

ABA & B
000
010
100
111
python
코드 하이라이팅 중...
text
코드 하이라이팅 중...

OR 연산자 (|) 기초

OR 연산은 두 비트 중 하나라도 1이면 1을 반환합니다.

ABA | B
000
011
101
111
python
코드 하이라이팅 중...
text
코드 하이라이팅 중...

XOR 연산자 (^) 기초

XOR(배타적 논리합) 연산은 두 비트가 서로 다를 때 1을 반환합니다.

ABA ^ B
000
011
101
110
python
코드 하이라이팅 중...
text
코드 하이라이팅 중...

정보처리기사 실기 기출 문제

비트 연산자 | 정처기 감자