PDF形式でダウンロード PDF形式でダウンロード

2進法の割り算の問題は筆算を使って解くことができ、計算過程を理解しやすくなるほか、簡単なコンピュータのプログラムを書くのにも役立ちます。その他に、馴染みのある方法ではないかもしれませんが、引き算を繰り返す補数法もあります。ただし、これはプログラミングではあまり使われません。[1] 機械言語では通常、推定アルゴリズムを使って効率を上げますが、それについてはここでは触れません。[2]

方法 1 の 2:
筆算を使う

  1. 1
    10進法の筆算を復習します通常の10進法の数の筆算をしばらくやっていない場合、172 ÷ 4を例題にして基本を思い出しましょう。基本を覚えている場合は次の手順に進んで2進法の解き方を学びましょう。
    • 割られる数割る数で割り、その答えをと言います。
    • 割られる数の最初の数字と割る数を比較します。割る数の方が大きい場合、割られる数の桁数を増やしていき、割る数の方が小さくなるようにします(例えば172 ÷ 4の場合、まず4と1を比較します。4 > 1なので、次に4と17を比較します)。
    • 商の最初の数字を、割られる数のうち、比較に使った数の最後の位の上に書きます。4と17を比較すると、17には4の4倍まで含まれることが分かります。そのため、4を商の最初の数字として7の上に書きます。
    • 掛け算と引き算をして余りを算出します。商の数字と割る数を掛けます。例題の場合は4 x 4 = 16です。17の下に16を書き、17 – 16の引き算をすると余り1が求められます。
    • 繰り返します。再度割る数4を次の数字1と比べます。4 > 1なので、割られる数の次の数字を「下げ」、4と12を比べます。12には4の3倍が含まれ、余りはありません。そのため、商の次の数として3と書きます。答えは43です。
  2. 2
    2進法の割り算を筆算で書きます。例として10101 ÷ 11を解きましょう。10101を割られる数、11を割る数として問題を筆算にします。上には商を書くための余白、下には計算を書くための余白を確保しましょう。
  3. 3
    割る数と割られる数の最初の数を比べます。これは10進法の筆算と同じ方法ですが、2進法の方がずっと簡単です。割る数で割れない(0)か、割る数を1倍できるか(1)のいずれかしかありません。
    • 11 > 1なので、11は1に「含まれません」。商の最初の数として(割られる数の最初の数字の上に)0を書きましょう。
  4. 4
    次の数に移り、1を得られるまで繰り返します。例題の場合は以下のようになります。
    • 割られる数の次の数を下ろします。11 > 10なので、商に0を書きます。
    • 次の数を下ろします。11 < 101なので、商に1を書きます。
  5. 5
    余りを求めます。10進法の筆算と同様に、得られた数(1)に割る数(11)を掛け、その答えを割られる数の下に、計算した数の位置に揃えて書きます。1 x割る数は常に割る数なので、2進法ではこの手順は手早く行えます。
    • 割る数を割られる数の下に書きます。ここでは、11を割られる数の最初の3桁(101)の下に書きます。
    • 101 – 11を計算し、余り10を求めます。復習が必要な場合は、 2進法の数の引き算の方法を確認しましょう。
  6. 6
    解き終わるまで繰り返します。余りに割られる数の次の数字を下ろして100を作ります。11 < 100なので、商の次の数字として1を書きます。同じ手順を繰り返します。
    • 100の下に11を書き、引き算すると1が求められます。
    • 割られる数の最後の数字を下ろし、11を作ります。
    • 11 = 11なので、商(答え)の最後の数字として1を書きます。
    • 余りは無いので、問題が解けました。答えは00111で、単純に111とすることもできます。
  7. 7
    必要に応じて小数点を加えます。答えが整数ではない場合もあります。最後の数字を使って計算した後も余りがある場合、「.0」を割られる数に加え、商に「.」を加えます。そうすればさらに数字を下ろして計算を続けられます。必要な位まで計算を繰り返したら、繰り上げや繰り下げをします。最後の0を消せば繰り下げとなり、最後の数字が1の場合はそれを消して1つ上の位に1を加えます。プログラミングでは、2進法と10進法とで数を書き換える際は、標準のアルゴリズムに従って繰り上げと繰り下げを行い、誤りを防ぎます。[3]
    • 2進法の割り算では、計算の最後が端数の繰り返しとなることが、10進法の場合よりもよく起こります。[4]
    広告

方法 2 の 2:
補数法を使う

  1. 1
    基本的な考え方を理解します。どのような基数の割り算においても、割る数を割られる数及び余りから引き続け、負の数に至るまでに何回引き算したか数えることで答えを求められます。例として、10進法で26 ÷ 7を解いてみましょう。
    • 26 - 7 = 19 (引き算した回数1 回)
    • 19 - 7 = 12 (2)
    • 12 - 7 = 5 (3)
    • 5 - 7 = -2。これは負の数なので、行き過ぎです。答えは3で、余りは5です。この方法では答えの非整数の部分は求められません。
  2. 2
    補数を引き算する方法を理解しましょう。上記の方法を2進法で使うのは簡単ですが、より効率よく引き算する方法もあり、2進法の数の割り算をコンピュータでプログラミングする際に時間を短縮できます。これが 2進法における補数法での引き算です。111 – 011を例に、基本的な計算方法を見ていきましょう(2つの数字が同じ桁数でなければいけません)。
    • 2つ目の項の各数字を1から引いて、1の補数を求めます。これは2進法では全ての1を0に、0を1に置き換えれば良いので、簡単です。[5] [6] 例題の場合、011は100になります。
    • 結果に1を足し、100 + 1 = 101とします。これは2の補数と呼ばれ、引き算を足し算の問題に変換します。[7] 本質的には、最終的に正の数を引く代わりに負の数を足したことになるのです。
    • 結果を最初の項に加えます。足し算の問題を書き出して解くと、111 + 101 = 1100が求められます。
    • 桁上げ数を消します。答えの最初の数字を消すと最終的な答えになります。1100 → 100
  3. 3
    上記の2つの方法を組み合わせます。ここまでで、割り算の問題を引き算で解く方法と、引き算の問題を2の補数で解く方法を学びました。これらを組み合わせると、割り算の問題を解くための1つの方法になります。やり方は次の通りです。[8] 挑戦したい人は、読み進める前に自分で考えてみましょう。
  4. 4
    2の補数を足して、割られる数から割る数を引きます。100011 ÷ 000101を例に見ていきましょう。まずは100011 – 000101を、2の補数を使って足し算に変換して解きます。
    • 2の補数は000101 = 111010 + 1 = 111011です。
    • 100011 + 111011 = 1011110
    • 桁上げ数を消します。→ 011110
  5. 5
    商に1を加えます。コンピュータのプログラムでは、ここで商に1を加えます。紙で計算している場合は、他の計算と混ざらないよう、隅にメモ書きしましょう。これで1回引き算が完了しました。そのため、現時点での商は1です。
  6. 6
    同様に、割られる数から割る数を繰り返し引きます。前の計算の答えが、割る数を1回当てはめた場合の残りです。割る数の2の補数を毎回足し、桁上げ数を消します。毎回商に1を加え、残りが割る数と同じか、それより小さくなるまで繰り返します。[9]
    • 011110 + 111011 = 1011001 → 011001 (商1+1=10)
    • 011001 + 111011 = 1010100 → 010100 (商10+1=11)
    • 010100 + 111011 = 1001111 → 001111 (11+1=100)
    • 001111 + 111011 = 1001010 → 001010 (100+1=101)
    • 001010 + 111011 = 10000101 → 0000101 (101+1=110)
    • 0000101 + 111011 = 1000000 → 000000 (110+1=111)
    • 0は101より小さいので、ここで計算を止めます。商111 が割り算の答えです。余りは最後の引き算の答えなので、この場合では0(余り無し)です。
    広告

ポイント

  • 2進法の数に正負号が付いている場合、正負号を無視して計算します。そして最後に答えが正か負かを判断します。
  • 2の補数を使って引き算する方法は、2つの数の桁数が異なる場合には使えません。小さい方の数の頭に0を加えて桁数を調整しましょう。
  • 2進法の計算式を機械言語の命令セットに導入する場合、インクリメント、ディクリメント、データを取り出す方法を確認してから行いましょう。
広告

関連記事

ミリリットル(mL)をグラム(g)に換算するミリリットル(mL)をグラム(g)に換算する
円の中心を求める円の中心を求める
直角三角形の斜辺の長さを求める直角三角形の斜辺の長さを求める
「分」を「時間」に変換する「分」を「時間」に変換する
三角形の高さを求める三角形の高さを求める
リットルの体積を求めるリットルの体積を求める
華氏と摂氏の温度を換算する華氏と摂氏の温度を換算する
秒を時間に変換する秒を時間に変換する
通常の五角形の面積を求める通常の五角形の面積を求める
六角形の面積を求める六角形の面積を求める
Xの値を求めるXの値を求める
二進法を十進法に変換する二進法を十進法に変換する
三角形の外周を求める三角形の外周を求める
整数から分数を引く整数から分数を引く
広告

このwikiHow記事について

wikiHowは「ウィキ」サイトの一つであり、記事の多くは複数の著者によって共著されています。 この記事は、匿名の筆者を含む28人が執筆・推敲を行い、時間をかけて編集されました。 この記事は10,360回アクセスされました。
カテゴリ: 数学
このページは 10,360 回アクセスされました。

この記事は役に立ちましたか?

広告