이진수 계산기 쉽게 이해하기 — 개념과 원리
이 계산기는 길이에 상관없이 이진수의 산술·비트 연산을 합니다. 덧셈, 뺄셈, 곱셈, 나머지가 있는 정수 나눗셈, AND, OR, XOR을 지원하며, 결과를 이진수, 십진수, 16진수로 보여 주고 십진수 계산식도 함께 보여 줘 직접 확인할 수 있습니다.
계산 방법
입력은 2진법 정수로 읽습니다(앞에 빼기 기호 가능, 공백·밑줄 무시).
+, −, ×는 일반 산술과 같습니다.
÷는 0 쪽으로 버린 몫과 첫 번째 수의 부호를 따르는 나머지를 줍니다. 첫 수 = 몫 × 둘째 수 + 나머지입니다.
AND, OR, XOR은 비트를 비교합니다. 1 AND 1 = 1, 1 OR 0 = 1, 1 XOR 1 = 0입니다.
- 음수는 대부분의 프로그래밍 언어처럼 2의 보수 형태로 비트 연산에 참여합니다.
원리
이진수는 십진수처럼 자리값 체계이지만 각 자리가 10이 아니라 2의 거듭제곱입니다. 십진수에서 통하는 산술 규칙은 모두 이진수에서도 통하며, 올림과 빌림이 10 대신 2에서 일어날 뿐입니다. 이진수 긴 나눗셈은 특히 간단해서, 매 단계 나누는 수를 빼거나(몫 비트 1) 빼지 않거나(몫 비트 0) 둘 중 하나입니다. 비트 연산은 각 자리를 따로 다루며, 프로그램이 개별 플래그를 켜고 끄고 검사하는 방법입니다.
예제 풀이
기본값인 1101 0110 ÷ 1011로 계산합니다.
- 1101 0110 = 128 + 64 + 16 + 4 + 2 = 214입니다.
- 1011 = 8 + 2 + 1 = 11입니다.
- 214 ÷ 11 = 19 나머지 5이므로 214 ÷ 11 = 19입니다.
- 몫을 이진수로 쓰면 10011(16진 13)이고, 5비트입니다.
- 나머지는 이진수 101(십진 5)이며, 19 × 11 + 5 = 214로 확인됩니다.
결과 해석
십진수 확인 줄로 연산이 맞는지 보십시오. 16진수는 한 자리가 4비트를 나타내 프로그래머에게 편리합니다. 비트 연산은 두 수를 오른쪽 끝에 맞춰 자리마다 비교합니다. AND는 둘 다 1인 비트, OR은 하나라도 1인 비트, XOR은 서로 다른 비트만 남깁니다.
흔한 실수
- 나눗셈에서 소수 결과를 기대하는 경우(몫은 정수입니다)
- AND, OR, XOR이 십진 자릿수가 아닌 비트에 작용한다는 점을 잊는 경우
- 자리값 없이 왼쪽부터 읽는 경우
- 나머지가 항상 양수라고 생각하는 경우(여기서는 첫 수의 부호를 따릅니다)
자주 묻는 질문
이진수를 십진수로 바꾸려면?
1이 있는 자리의 자리값(1, 2, 4, 8 …)을 모두 더합니다.
XOR은 어디에 쓰나요?
비트 뒤집기, 간단한 검사합, 두 값의 비트별 비교에 씁니다.
16진수와 이진수는 어떤 관계인가요?
16진수 한 자리가 정확히 이진수 네 자리를 나타냅니다.
출처: D. Tarnoff, Computer Organization and Design Fundamentals (East Tennessee State University), Chapter 3 "Binary Math and Signed Representations" · ECMAScript Language Specification, BigInt division (truncation toward zero)