MCP로 연결 →

계산 입력

공식

광고

결과

{
Binary Product (1010 × 11)
11110
2진수 (밑 2)
첫 번째 수 (10진수) 10
두 번째 수 (10진수) 3
곱 (10진수) 30
}

2진수 곱셈 계산기란?

이 도구는 두 개의 2진수(밑이 2인 수)를 곱한 뒤, 그 곱을 2진수 문자열로 보여 주고 두 입력값과 결과의 10진수 값까지 함께 제공합니다. 2진수 연산은 어느 나라에서나 동일하게 적용되는 보편적인 수학이므로, 특정 국가나 제도에 얽매이지 않고 누구나 사용할 수 있습니다.

사용 방법

각 입력란에 2진수(0과 1만)를 입력하세요. 그 외의 문자는 자동으로 무시되므로 공백이나 잘못 입력된 기호가 있어도 결과에 영향을 주지 않습니다. 계산 버튼을 누르면 곱이 2진수와 10진수로 모두 표시됩니다.

공식 이해하기

2진수 곱셈은 자리 이동과 덧셈(shift-and-add) 방식으로 한 비트씩 계산할 수도 있지만, 가장 깔끔한 방법은 각 피연산자를 10진수로 변환해 곱한 뒤 그 답을 다시 2진수로 바꾸는 것입니다. 식으로 나타내면 $$\text{P}_2 = \text{bin}\left(\text{dec}\left(\text{A}_2\right) \times \text{dec}\left(\text{B}_2\right)\right)$$ 입니다. 예를 들어 2진수 1010은 \(1\cdot 8 + 0\cdot 4 + 1\cdot 2 + 0\cdot 1 = 10\) 이므로 10진수 10과 같습니다.

풀이 예제

1010 × 11을 계산해 봅시다. 먼저 변환하면 \(1010_2 = 10\), \(11_2 = 3\) 입니다. 10진수로 곱하면 \(10 \times 3 = 30\) 이고, 30을 다시 2진수로 바꾸면 $$30 = 16 + 8 + 4 + 2 = 11110_2$$ 입니다. 따라서 1010 × 11의 결과는 2진수로 11110 입니다.

광고
부분곱과 최종 2진수 곱으로 풀어낸 2진수 긴 곱셈
2진수 곱셈은 10진수 긴 곱셈과 같은 자리이동·덧셈 방식을 사용합니다.

이진수를 손으로 곱하는 방법

이진수 곱셈은 십진수와 동일한 시프트 앤 애드 장제법 절차를 사용하지만, 승수의 각 자릿수가 0 또는 1이므로 훨씬 더 간단합니다. 1을 곱하면 피승수를 복사하고, 0을 곱하면 0의 행을 얻습니다. 유일한 실제 작업은 각 부분곱을 비트 위치만큼 왼쪽으로 시프트한 다음 이진 자리올림 규칙을 사용하여 행들을 더하는 것입니다.

\((1010)_2 \times (11)_2\)에 대한 풀이 예시:

  1. 피연산자를 설정합니다. 피승수 \(A = 1010_2 = 10\), 승수 \(B = 11_2 = 3\). 예상 곱은 \(10 \times 3 = 30\)입니다.
  2. 가장 오른쪽 승수 비트(비트 0 = 1)로 곱합니다. 비트가 1이므로 피승수를 복사합니다: 부분곱 \(= 1010\), 왼쪽으로 0칸 시프트.
  3. 다음 승수 비트(비트 1 = 1)로 곱합니다. 비트가 1이므로 피승수를 다시 복사하고 1칸 왼쪽으로 시프트합니다(끝에 0 추가): 부분곱 \(= 10100\).
  4. 영(0) 행을 제거합니다. 승수 비트가 0이었다면 그 전체 행은 영이 되고 건너뛸 수 있습니다. 여기서는 두 행 모두 유지됩니다.
  5. 이진 덧셈으로 부분곱들을 더합니다. 자릿값으로 정렬하고 더합니다. 1이 두 개 만나면 자리올림합니다 (\(1+1 = 10\), 0을 쓰고 1을 올림):
    \(\;\;\;01010\)
    \(+\,10100\)
    \(=\,11110\)
  6. 결과를 읽습니다. 이진 곱은 \((11110)_2\)이며, 십진수로 30입니다 — \(10 \times 3 = 30\)을 확인했습니다. 덧셈 단계 자체를 11110으로 검증할 수 있습니다.

요약하면: 승수 비트마다 시프트된 행을 하나씩 생성하고(0 비트는 영 행), 이진 덧셈을 사용하여 모든 행을 합합니다. \(m\)비트 수와 \(n\)비트 수의 전체 곱은 \(m+n\)비트를 초과하지 않습니다.

광고

더 많은 풀이 예시

각 예시는 두 입력의 십진수 변환, 시프트 앤 애드 부분곱, 최종 이진 곱을 보여줍니다.

예시 1 — \(111_2 \times 101_2\) (7 × 5 = 35)

  1. 변환: \(111_2 = 7\), \(101_2 = 5\).
  2. 승수 비트(오른쪽에서 왼쪽)는 1, 0, 1:
    • 비트 0 = 1 \(\Rightarrow 111\) (시프트 0)
    • 비트 1 = 0 \(\Rightarrow\) 영 행, 건너뜀
    • 비트 2 = 1 \(\Rightarrow 11100\) (시프트 2)
  3. 더하기: \(00111 + 11100 = 100011\).
  4. 결과: \((100011)_2 = \) 35, \(7 \times 5 = 35\)와 일치합니다.

예시 2 — \(1100_2 \times 1010_2\) (12 × 10 = 120)

  1. 변환: \(1100_2 = 12\), \(1010_2 = 10\).
  2. 승수 \(1010_2\) 비트(오른쪽에서 왼쪽)는 0, 1, 0, 1:
    • 비트 0 = 0 \(\Rightarrow\) 건너뜀
    • 비트 1 = 1 \(\Rightarrow 11000\) (시프트 1)
    • 비트 2 = 0 \(\Rightarrow\) 건너뜀
    • 비트 3 = 1 \(\Rightarrow 1100000\) (시프트 3)
  3. 더하기: \(0011000 + 1100000 = 1111000\).
  4. 결과: \((1111000)_2 = \) 120, \(12 \times 10 = 120\)과 일치합니다.

예시 3 — \(1_2 \times 1101_2\) (한 자리 승수, 1 × 13 = 13)

  1. 변환: \(1_2 = 1\), \(1101_2 = 13\).
  2. 승수 \(1\)은 1과 같은 단일 비트를 가지므로 시프트가 없는 정확히 하나의 부분곱이 있습니다: \(1101\).
  3. 행이 하나뿐이므로 더할 것이 없습니다.
  4. 결과: \((1101)_2 = 13\). 모든 이진수에 \(1\)을 곱하면 십진수에서와 마찬가지로 변하지 않습니다.

자주 묻는 질문

2진수가 아닌 숫자를 입력하면 어떻게 되나요? 0과 1 이외의 숫자는 계산 전에 제거되므로, 유효한 2진수 자릿수만 사용됩니다.

큰 수도 처리할 수 있나요? 네. 입력값은 64비트 정수로 처리되므로, 그 한도 내에서는 아주 긴 2진수 문자열도 정확하게 계산됩니다.

왜 10진수 값을 함께 보여 주나요? 10진수 형태를 함께 보면 변환이 올바른지 확인할 수 있고, 실제로 무엇을 곱하고 있는지 정확히 이해하는 데 도움이 됩니다.

최종 업데이트: