프로그래머 계산기 & 비트 연산 계산기

하나의 식을 입력하세요. 0x 16진수, 0b 2진수, 0o 8진수 리터럴과 비트 연산자 & | ^ ~, 시프트 << >> >>>, 로테이트, 일반 산술을 섞어 쓸 수 있습니다 — 결과는 8, 16, 32 또는 64비트 워드 크기에서 부호 있음 또는 없음으로 10진수, 16진수, 8진수, 2진수로 실시간 갱신됩니다. 아래에는 클릭 가능한 비트 그리드, 두 피연산자 비트 패널(AND / OR / XOR / NAND / NOR / NOT / 시프트 / ROL / ROR), 단일 비트 설정/지우기/반전이 있습니다. 비트 논리 없이 진법 변환만 하려면 진법 변환기를, 통계는 통계 계산기를 사용하세요.
워드 크기   표시   연산자: & | ^ ~ << >> >>> + - * / % ( ) — 정수 연산 전용, 결과는 워드 크기에서 랩됩니다.
DEC
HEX
OCT
BIN
비트는 최상위 비트부터 표시됩니다. 흐린 칸은 현재 워드 크기 밖입니다.
비트 인덱스 (0 = 최하위 비트)
A =    B =  A와 B는 전체 식을 받습니다 (예: 1 << 12).
A와 B가 모두 구문 분석되면 결과 표가 나타납니다. 시프트와 로테이트는 B에서 개수를 가져옵니다.
예시:
시프트 동작: <<는 워드 크기로 다시 마스크됩니다(위에서 밀려난 비트는 사라집니다). >>>는 항상 논리(부호 없음) 시프트입니다. >>는 표시 선택을 따릅니다: 부호 있음 모드에서는 산술, 부호 없음 모드에서는 논리. 프라이버시: 계산기 전체가 이 탭에서 실행됩니다 — 서버 없음, 저장 없음.

프로그래머 계산기란?

프로그래머 계산기는 컴퓨터가 저장하는 방식 그대로, 즉 고정 폭 비트 워드로 산술을 수행합니다. 끝없는 하나의 수직선 대신, 8비트 워드는 256개 값의 원이고 32비트 워드는 4,294,967,296개 값의 원입니다. 모든 결과는 그 원 안으로 다시 래핑되며, 같은 비트를 부호 없는 수(0 … 255)로도, 부호 있는 2의 보수 값(-128 … 127)으로도 읽을 수 있습니다. 위의 네 진법 행은 같은 비트를 네 가지로 표현한 것입니다 — 하나를 편집하면 나머지 셋이 따라옵니다.

프로그래머가 16진수를 쓰는 이유

16진수 한 자리는 정확히 4비트이므로 바이트는 항상 16진수 두 자리, 32비트 워드는 항상 여덟 자리입니다. 16진수는 0을 사람 눈에 맞게 재묶은 2진수입니다:

2진수16진수10진수
1111 11110xFF255
0001 01100x1622
1000 00000x80128 (또는 부호 있으면 -128)

한 문단으로 보는 2의 보수

워드를 부호 있는 값으로 읽으려면 최상위 비트를 보세요. 0이면 값은 부호 없는 수 그대로입니다. 1이면 원의 크기를 빼세요: 8비트 0xFF는 255 − 256 = −1입니다. 이것이 전부입니다 — -x와 0 - x는 같은 비트를 만들며, 그래서 같은 가산기 하드웨어가 둘 다 처리합니다. 부호 뒤집기는 "모든 비트를 반전하고 1을 더하는 것"입니다: NOT(0x01) = 0xFE, +1 = 0xFF = −1.

시프트 연산자 한눈에 보기

연산자이름8비트 예시 (a = 0xF0)
a << 1왼쪽 시프트0xE0 — 최상위 비트가 밀려나가고 아래에서 0이 들어옵니다
a >> 1 (부호 없음)논리 오른쪽 시프트0x78 — 위에서 0이 들어옵니다
a >> 1 (부호 있음, a = −16)산술 오른쪽 시프트0xF8 = −8 — 부호 비트가 복사됩니다
a >>> 1항상 논리표시 선택과 무관하게 0x78
rol(a, 1)왼쪽 로테이트0xE1 — 밀려나간 최상위 비트가 아래로 다시 들어옵니다

이 페이지가 막아 주는 흔한 실수

산술 시프트 vs 논리 시프트: 부호 비트 복사(산술)와 0 채우기(논리)는 최상위 비트가 1일 때 다릅니다 — 표시 선택을 바꾸고 0xF0 >> 1이 0x78과 0xF8 사이에서 변하는 것을 보세요.
53비트의 놀라움: JavaScript의 일반 Number 타입은 64비트 부동소수점이라 안전한 정수 비트가 53개뿐입니다. 0xFFFFFFFFFFFFFFFF는 정확히 표현할 수 없습니다 — 이 페이지는 내부적으로 정확한 64비트 정수 연산을 사용하므로 보이는 모든 16진수 숫자를 신뢰할 수 있습니다.
부동소수점 함정: 0.1 + 0.2는 부동소수점에서 유명하게 0.30000000000000004를 냅니다. 이 계산기는 설계상 정수 전용입니다 — 나눗셈은 0 방향으로 버림하며, C의 정수 /와 정확히 같습니다.
선행 0: 옛 C에서 052 같은 리터럴은 8진수를 뜻했습니다. 여기서 10진수는 순수 숫자이고 8진수는 0o 접두사가 필요하므로 모호함이 없습니다.

FAQ

가장 큰 수는? — 64비트 부호 없음: 18,446,744,073,709,551,615 (0xFFFFFFFFFFFFFFFF); 부호 있음: ±9,223,372,036,854,775,808.
1 << 8이 왜 0이 되나요? — 워드 크기가 8비트라서 비트 8이 존재하지 않고 마스크가 이를 버립니다. 유지하려면 16/32/64비트로 전환하세요.
~는 무엇을 하나요? — 비트별 NOT: 현재 워드 크기 안의 모든 비트가 뒤집힙니다. 그래서 ~0은 전부 1입니다 (255 / 65535 / −1 …).
부동소수점은 있나요? — 아니요, 정수 전용입니다. 부동소수점, 삼각함수, 함수가 필요하면 공학용 계산기를 사용하세요.
무엇이든 내 컴퓨터를 떠나나요? — 아니요: 서버, 저장, 분석 없음. 탭을 닫으면 모두 사라집니다.