MCPで接続 →

計算を入力してください

公式

広告

結果

商(2進数)
101
remainder 1
被除数(10進数) 11
除数(10進数) 2
商(10進数) 5
余り(10進数) 1

2進数の割り算計算機とは?

このツールは、ある2進数(基数2)を別の2進数で割り、余りを2進数と10進数の両方で表示します。2進数の筆算(長除法)は手計算だとミスが起こりやすいため、本ツールは入力を一度10進数に変換し、整数の割り算を行ったうえで、結果を再び2進数に変換して表示します。

使い方

1つ目の入力欄に被除数(割られる数)、2つ目の入力欄に除数(割る数)を、0と1の数字だけを使って入力します。「計算」を押すと、商と余りが表示されます。0での割り算は定義できないため、除数に0を指定することはできません。

計算式のしくみ

2進数の入力をABとすると、本ツールはまず \(A_{10} = \text{parseBinary}(A)\)、\(B_{10} = \text{parseBinary}(B)\) を求めます。整数の商は \(Q = \left\lfloor A_{10} / B_{10} \right\rfloor\)、余りは \(R = A_{10} \bmod B_{10}\) です。そしてQとRをそれぞれ2進数に戻します。これは、コンピュータが符号なし整数の割り算を行う仕組みと同じです。

$$\left(\text{Dividend}_2\right) \div \left(\text{Divisor}_2\right) = Q \;\text{R}\; R$$

$$\begin{gathered} \text{Dividend}_2 \div \text{Divisor}_2 = Q \;\text{remainder}\; R \\[1.5em] \text{where}\quad \left\{ \begin{aligned} Q &= \left\lfloor \frac{A}{B} \right\rfloor \\ R &= A \bmod B \\ A &= (\text{Dividend}_2)_{10} \\ B &= (\text{Divisor}_2)_{10} \end{aligned} \right. \end{gathered}$$

2進数の除数・被除数・商・余りの位置を示す筆算のレイアウト
2進数の筆算では結果を商と余りに分けます。

計算例

\(1100_2\) を \(10_2\) で割ってみましょう。10進数にすると \(1100_2 = 12\)、\(10_2 = 2\) です。\(12 \div 2 = 6\)、余りは 0。これを2進数に戻すと \(6 = 110_2\)、\(0 = 0_2\) となります。したがって \(1100 \div 10 = \) 110 余り 0 です。

シフトと減算による段階的な2進数の筆算
各ステップで比較し、引き、次のビットを下ろします。

2進数の割り算を手作業で行う方法

2進の長除法は10進の長除法とまったく同じように機能しますが、実はより簡単です。各ステップで、除数は現在のビットに適合する1を書く)か、適合しない(0を書く)かのいずれかです。暗記すべき乗算表はありません。除数に0または1を掛けるだけです。

一般的な手順で計算する \(\text{被除数}_2 \div \text{除数}_2 = Q \;\text{R}\; R\) は以下の通りです:

  1. 最上位ビットから揃える。被除数の一番左のビットから現在の作業値として始めます。
  2. 現在の作業値を除数と比較する。作業値が除数以上の場合、除数が「適合します」。
  3. 商ビットを書く。適合する場合は1を上に書き、適合しない場合は0を書きます。
  4. 引く。1を書いた場合、除数を作業値から引き、その差が新しい作業値になります。0を書いた場合、作業値は変わりません。
  5. 被除数の次のビットを持ってきて作業値に追加します。
  6. 繰り返すステップ2~5を被除数のすべてのビットが持ってくるまで繰り返します。
  7. 結果を読み取る。上に集められたビットが商 \(Q\) を形成します。残された作業値は余り \(R\) です。

計算例:\(1011_2 \div 10_2\)(10進では11÷2)。

  1. 最初のビットを持ってきます:作業値 = 1。\(1 \ge 10\)ですか?いいえ → 商ビット0
  2. 次のビットを持ってきます:作業値 = 10。\(10 \ge 10\)ですか?はい → 商ビット1、引きます:\(10 - 10 = 0\)。
  3. 次のビットを持ってきます:作業値 = 01 = 1。\(1 \ge 10\)ですか?いいえ → 商ビット0
  4. 最後のビットを持ってきます:作業値 = 11。\(11 \ge 10\)ですか?はい → 商ビット1、引きます:\(11 - 10 = 1\)。
  5. 残るビットはありません。商 = 0101 = 101、余り = 1

10進での確認:\(11 \div 2 = 5\) 余り \(1\)、そして \(101_2 = 5\)、\(1_2 = 1\)。✓

2進数除法のその他の例

各例は、関係が常に \(\text{被除数} = \text{除数}\times Q + R\) である2進の長除法とその10進確認を示しています。

例1 — 0以外の余り:\(1011_2 \div 10_2\)

  1. 10進数相当値:\(1011_2 = 11\)、\(10_2 = 2\)。
  2. 長除法は商ビット101と余りビット1を与えます。
  3. 結果:\(1011_2 \div 10_2 = 101_2 \;\text{R}\; 1_2\) → 10進では \(11 \div 2 = 5\;\text{R}\;1\)。
  4. 確認:\(2 \times 5 + 1 = 11\)。✓

例2 — 除数が被除数より大きい:\(100_2 \div 1000_2\)

  1. 10進数相当値:\(100_2 = 4\)、\(1000_2 = 8\)。
  2. 除数(8)が被除数(4)より大きいため、適合しないので、すべての商ビットが0です。
  3. 結果:\(100_2 \div 1000_2 = 0 \;\text{R}\; 100_2\) → 10進では \(4 \div 8 = 0\;\text{R}\;4\)。
  4. 確認:\(8 \times 0 + 4 = 4\)。✓ 被除数が除数より小さい場合、商は常に0で、余りは被除数そのものです。

例3 — きれいな除法と確認:\(11110_2 \div 110_2\)

  1. 10進数相当値:\(11110_2 = 30\)、\(110_2 = 6\)。
  2. ビットを持ってきて 110 に達するまで続ける → 1回適合します。ビットを持ってき続け、適合するたびに \(110\) を引きます。
  3. 結果:\(11110_2 \div 110_2 = 101_2 \;\text{R}\; 0\) → 10進では \(30 \div 6 = 5\;\text{R}\;0\)。
  4. 商を確認:\(101_2 = 5\)、そして \(6 \times 5 + 0 = 30\) をチェック。✓ 余りが0であるため、除法は正確です。

これらの変換は2進数から10進数への変換器で確認でき、最終チェックは商と除数を掛け合わせることで確認できます。

2進数除法の重要な用語

被除数
割られる数 — 除算の括弧の下に書かれた値。\(1011_2 \div 10_2\) では、被除数は \(1011_2\) です。
除数
割る数。\(1011_2 \div 10_2\) では、除数は \(10_2\) です。除数は0であってはいけません。
除算の整数結果 — 除数が被除数に何回適合するかです。括弧の上に書かれ、ステップごとに1ビットです。
余り
最大の整数商を取り除いた後に残された量:\(R = \text{被除数} - \text{除数}\times Q\)。これは常に除数より小さいです。
2進法(基数2)
0と1のみの数字を使用する数値体系。各位取り値は10の累乗ではなく2の累乗(\(1, 2, 4, 8, \dots\))です。
ビット
単一の2進数字(0または1) — 「ビナリー・ディジット」の略。
LSB / MSB
最下位ビットは最も右のビット(1の位)です。最上位ビットは最も左のビット(最高位)です。2進の長除法はMSBからLSBに向かってビットを処理します。
整数除法 / フロア除法
整数商のみを保持し、分数部分を破棄する除算 — これは正確に2進の長除法が余りとともに生成するものです。
モジュロ
除算の余りのみを返す操作(mod または % と書かれることが多い)。\(1011_2 \div 10_2\) の場合、モジュロの結果は \(1_2\) です。

よくある質問(FAQ)

小数を含む2進数の割り算はできますか? いいえ。この計算機は符号なしの整数(自然数)の2進数を対象とし、整数の商と余りを返します。

除数が被除数より大きい場合はどうなりますか? 商は0となり、余りは被除数と同じ値になります。たとえば \(10 \div 100\) では、商が0、余りが10です。

なぜ10進数も表示するのですか? 10進数の値を一緒に見ることで、結果の確認がしやすくなり、変換の過程も理解しやすくなるからです。

最終更新: