~ / calculator / bitwise-calculator

🔢 비트 연산 계산기

AND·OR·XOR·NOT과 비트 시프트 결과를 2진수·16진수·10진수로 한 번에 확인해요. 8~64비트, 음수(2의 보수), 0x·0b 입력을 지원해요.

input
칸
result
결과
-
광고

사용법

  1. A와 B에 정수를 넣어요. 10진수는 그대로 쓰고, 16진수는 0xFF, 2진수는 0b1100처럼 앞에 접두사를 붙여요. 음수(-1)도 넣을 수 있어요.
  2. 비트 폭을 골라요. 8·16·32·64비트 중에서 코드에서 쓰는 정수 크기(예: C의 uint8_t, int32_t)와 맞추면 돼요.
  3. 시프트 칸수를 넣으면 A를 왼쪽·오른쪽으로 밀어 낸 결과가 나와요.
  4. 결과는 각 연산마다 2진수(4비트씩 끊어서), 16진수, 부호 없는 값, 부호 있는 값으로 보여요. 결과 줄을 눌러 복사하거나 상단 copy 버튼으로 전체를 복사하세요.

비트 연산이란

컴퓨터는 모든 정수를 0과 1의 나열로 저장해요. 비트 연산은 숫자를 하나의 값이 아니라 비트 하나하나의 묶음으로 보고 같은 자리끼리 계산하는 연산이에요. 덧셈·뺄셈처럼 올림이 없고, 각 자리가 서로 독립이라 아주 빨라요. 그래서 권한 플래그(읽기·쓰기·실행), 네트워크 마스크, 체크섬, 해시, 그래픽 색상 합성, 암호 알고리즘 곳곳에서 써요.

연산 정리

연산기호(C·JS)뜻예 (8비트)
AND&두 비트가 모두 1일 때만 112 & 10 = 8
OR|둘 중 하나라도 1이면 112 | 10 = 14
XOR^두 비트가 다르면 112 ^ 10 = 6
NOT~모든 비트를 뒤집기~12 = 243
왼쪽 시프트<<왼쪽으로 밀고 오른쪽을 0으로 채움 (2배씩)1 << 7 = 128
산술 오른쪽 시프트>>오른쪽으로 밀고 맨 앞 부호 비트로 채움-8 >> 1 = -4
논리 오른쪽 시프트>>>오른쪽으로 밀고 0으로 채움0xF8 >>> 1 = 124

NAND·NOR·XNOR은 AND·OR·XOR의 결과를 뒤집은 값이에요. 디지털 회로에서는 NAND 하나만으로 모든 논리 회로를 만들 수 있어서 중요해요.

계산 예시

예시 1 — 12와 10. 8비트로 쓰면 12는 0000 1100, 10은 0000 1010이에요. 같은 자리끼리 보면 1이 겹치는 자리는 하나(0000 1000)라서 AND는 8, 하나라도 1인 자리는 0000 1110이라 OR는 14, 서로 다른 자리는 0000 0110이라 XOR는 6이에요. 12를 NOT 하면 1111 0011이고, 부호 없는 값으로 243(= 255 − 12)이에요.

예시 2 — 음수는 2의 보수. -1을 8비트에 담으면 모든 비트가 1인 1111 1111(= 0xFF = 부호 없는 255)이에요. 이 값과 5를 AND 하면 5의 비트가 그대로 남아 5가 돼요. 음수 n의 표현은 2w + n으로 계산하면 돼요(8비트에서 -8은 256 − 8 = 248 = 1111 1000).

예시 3 — 오른쪽 시프트 두 종류. 8비트의 -8(1111 1000)을 1칸 오른쪽으로 밀면 산술 시프트(>>)는 앞을 1로 채워 1111 1100(-4), 논리 시프트(>>>)는 0으로 채워 0111 1100(124)이 돼요. 부호 있는 수를 2로 나눌 때는 산술, 비트 묶음으로 다룰 때는 논리 시프트를 써요.

예시 4 — 왼쪽 시프트와 넘침. 1을 7칸 왼쪽으로 밀면 1000 0000 = 128이에요. 8비트에서는 한 칸 더 밀면 비트가 밖으로 나가 0이 돼요. 계산기는 선택한 비트 폭에서 자른 결과를 보여 줘요.

실무에서 자주 쓰는 비트 패턴

2진수와 16진수 읽는 법

2진수 4자리는 16진수 1자리와 정확히 대응돼요. 그래서 긴 2진수를 4비트씩 끊어 읽으면 16진수로 바로 바꿀 수 있어요. 예를 들어 1111 0011은 1111 = F, 0011 = 3이라 0xF3이에요. 반대로 0x2A는 2 = 0010, A(10) = 1010이라 0010 1010 = 42예요. 이 계산기가 2진수를 4비트씩 띄어 보여 주는 이유도 같아요. 표로 외워 둘 값은 0=0000, 1=0001, 2=0010, 3=0011, 4=0100, 5=0101, 6=0110, 7=0111, 8=1000, 9=1001, A=1010, B=1011, C=1100, D=1101, E=1110, F=1111이에요. 8비트(1바이트)는 16진수 2자리, 32비트는 8자리, 64비트는 16자리로 적어요.

활용 예시 — 파일 권한과 색상 코드

파일 권한(chmod). 읽기(r)=4, 쓰기(w)=2, 실행(x)=1이라서 비트로 보면 r=100, w=010, x=001이에요. 755는 소유자 111(rwx), 그룹 101(r-x), 기타 101(r-x)이고, 권한 확인은 mode & 4처럼 AND로 해요. 숫자 권한을 바로 풀어 보려면 chmod 권한 계산기를 쓰세요.

색상 코드에서 R·G·B 뽑기. 0xFF8040에서 빨강은 (c >> 16) & 0xFF = 255, 초록은 (c >> 8) & 0xFF = 128, 파랑은 c & 0xFF = 64예요. 시프트로 원하는 바이트를 맨 아래로 내린 뒤 0xFF와 AND 해서 나머지를 지우는 방식이에요. 이 계산기에서 A에 0xFF8040, 비트 폭 32, 시프트 16을 넣으면 논리 시프트 결과 줄에서 빨강 값 255(0xFF)를 바로 볼 수 있어요.

비트 개수 세기와 패리티

결과 요약에 나오는 'A의 1 비트 N개'는 포퓰레이션 카운트(popcount)예요. 1 비트가 짝수 개인지 홀수 개인지를 패리티라고 하고, 통신에서 오류를 간단히 확인하는 데 써요. 예를 들어 0000 1100은 1이 2개라 짝수 패리티예요. 1이 몇 개 켜져 있는지는 권한 플래그가 몇 개 설정됐는지, 집합에 원소가 몇 개 들어 있는지를 비트마스크로 표현한 문제에서도 그대로 답이 돼요. 코딩 테스트의 비트마스크 문제를 풀다가 값이 맞는지 의심될 때, 직접 손으로 쓰기 전에 이 계산기로 중간 값을 확인해 보세요.

자주 하는 실수

모든 계산은 이 브라우저 안에서만 이뤄지고 입력값은 전송되지 않아요. 64비트까지 BigInt로 정확하게 계산해요.

자주 묻는 질문

XOR는 어디에 쓰나요?
두 값이 다른 비트를 찾거나, 같은 키로 두 번 XOR 하면 원래 값으로 돌아오는 성질을 이용한 간단한 암호화·체크섬·토글에 써요. a ^ a = 0, a ^ 0 = a 가 성립해요.
음수는 어떻게 표현되나요?
대부분의 컴퓨터가 2의 보수를 써요. w비트에서 음수 n은 2^w + n으로 저장돼요. 8비트 -1은 255(0xFF), -128은 128(0x80)이에요. 맨 앞 비트가 1이면 음수예요.
>> 와 >>> 는 뭐가 다른가요?
>>는 산술 시프트로 맨 앞 부호 비트를 복사해 채우고, >>>는 논리 시프트로 0을 채워요. 음수에서만 결과가 달라요. C/C++의 >>는 부호 있는 정수에서 구현 정의라 컴파일러에 따라 다를 수 있어요.
이 계산기와 코드 결과가 달라요.
비트 폭과 부호 처리가 같은지 확인하세요. JavaScript는 비트 연산을 32비트 부호 있는 정수로 하고, Python은 정수가 무한 길이라 ~12가 -13으로 나와요. 이 계산기는 선택한 폭에서 자른 값을 보여 줘요.
16진수를 어떻게 입력하나요?
0x를 앞에 붙여요(예: 0xFF). 2진수는 0b, 8진수는 0o를 붙여요. 공백·콤마·밑줄은 자릿수 구분용으로 무시해요.
64비트도 정확한가요?
네. 내부적으로 BigInt를 사용해서 64비트 전체 범위(최대 18,446,744,073,709,551,615)를 정확히 계산해요.

관련 도구

더 둘러보기

🧮 계산 다른 도구

🔥 많이 찾는 도구

🔮 재미로 한 번 더

📝 읽어 볼 만한 글

글 전체 보기 →