정처기 감자정처기 감자
공통 기초연산자

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

비트 연산자

코딩C언어JavaPython
읽는데 11분 소요
처음 쓰인 날: 2026-02-03
마지막 수정일: 2026-10-04
조회수: —
선수학습(2개)
  • 산술·증감 연산자
  • 이진수 (2진수) 변환

요약

비트 연산자(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
이진수 변환을 모르면 비트 연산을 이해할 수 없습니다
10진수를 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
코드 하이라이팅 중…
왜 unsigned char를 사용했나요?
그냥 char를 쓰면 결과가 -6이 되어 직관적이지 않습니다. unsigned char는 부호가 없어서 5(0000 0101)를 반전하면 250(1111 1010)이 됩니다.

C언어 코드에서는 정수를 보통 int로 다룹니다. int는 부호가 있는 32비트 타입이라 ~로 반전된 비트가 음수로 해석되고, 그래서 ~5의 결과는 -6이 됩니다. 핵심 정리 표의 ~5 = -6이 바로 이 경우입니다.

int에서 ~ 결과 구하기: ~x = -x - 1

~x = -x - 1 공식과 원리 보기

int 같은 부호 있는 정수에서는 비트를 하나하나 뒤집지 않아도 다음 공식으로 결과를 바로 구할 수 있습니다.

~x = -x - 1 (부호를 바꾼 뒤 1을 뺍니다)

식계산결과
~5-5 - 1-6
~(-6)6 - 15
~00 - 1-1
c
코드 하이라이팅 중…

음수에 ~를 적용해도 같은 공식이 통합니다. ~(-6)은 -(-6) - 1 = 6 - 1 = 5입니다. 그래서 연산자 우선순위의 ~~b 예시처럼 ~를 두 번 하면 5 → -6 → 5로 원래 값으로 돌아옵니다.

~x(비트 반전)와 -x(부호 반전)는 다릅니다
~는 모든 비트를 뒤집는 연산자이고, -는 부호만 바꾸는 연산자입니다. ~5는 -5가 아니라 -6이고, ~(-6)은 6이 아니라 5입니다. 부호를 바꾼 뒤 반드시 1을 더 빼세요.

왜 -x - 1이 될까?

int는 32비트이므로 5를 반전하면 앞쪽 0들까지 모두 1로 바뀝니다.

text
코드 하이라이팅 중…

int 같은 부호 있는 타입은 맨 앞 비트로 부호를 정합니다. 0이면 양수, 1이면 음수입니다. ~5는 맨 앞 비트가 1이 되었으므로 음수입니다. 같은 반전이라도 앞에서 본 unsigned char는 부호 비트가 없어서 1111 1010이 그대로 250으로 읽힙니다. 즉 비트가 같아도 타입에 따라 값이 달라집니다.

맨 앞 비트가 1인 음수는 다음 3단계로 10진수 값을 읽습니다.

  1. 비트를 모두 반전합니다.
  2. 1을 더합니다.
  3. 나온 값 앞에 -를 붙입니다.

~5에 적용하면 다음과 같습니다.

text
코드 하이라이팅 중…

여기서 공식이 나옵니다. ~x를 ① 반전하면 원래 값 x로 돌아오고, ② 1을 더하면 x + 1, ③ -를 붙이면 -(x + 1)입니다. 즉 ~x = -(x + 1) = -x - 1입니다.


시프트 연산자

왼쪽 시프트

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

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

오른쪽 시프트

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

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

시프트 연산자는 비트 AND/OR 연산자보다 우선순위가 높습니다. a & b >> 1은 a & (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
코드 하이라이팅 중…
Java에서 true/false는 1/0이 아닙니다
C언어에서는 참이 1, 거짓이 0이지만, Java에서는 true와 false가 별도의 boolean 타입입니다. 다만 비트 연산자의 동작 원리는 같습니다. true를 1, false를 0으로 생각하면 이해하기 쉽습니다.

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은 '서로 다르면 true'로 외우세요
XOR은 두 값이 다를 때만 true입니다. '같으면 false, 다르면 true'라고 기억하면 됩니다.

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

java
코드 하이라이팅 중…

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


NOT 연산자 (!)

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

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

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

java
코드 하이라이팅 중…

c > d는 3 > 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
코드 하이라이팅 중…
오른쪽 시프트는 나눗셈과 같습니다
a >> n은 a를 2ⁿ(n=1이면 2, n=2면 4)으로 나눈 몫과 같습니다. 소수점 이하는 버립니다. 100 >> 1 = 50, 100 >> 2 = 25입니다.

왼쪽 시프트 (<<)

비트를 왼쪽으로 이동시키고 빈 자리는 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
코드 하이라이팅 중…

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

문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
문제를 불러오는 중이에요.
메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 3회 이론 압축
  • 26년 3회 코딩 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999