2進数の分割方法

著者: Mark Sanchez
作成日: 2 1月 2021
更新日: 1 J 2024
Anonim
【コンピューターの基礎】ビット・2進数・16進数
ビデオ: 【コンピューターの基礎】ビット・2進数・16進数

コンテンツ

2進数は、プロセス自体をよりよく理解したり、簡単なコンピュータープログラムを作成したりするために、列に分割できます。プログラミングではめったに使用されない補完メソッドを使用することもできます。通常、機械語はより効率的にするためにスコアリングアルゴリズムを使用しますが、これはこの記事の内容ではありません。

ステップ

方法1/2:筆算

  1. 1 列で割る 2つの10進数。 筆算を忘れた場合は、2つの10進数(基数10)を除算します:172÷4。筆算が優れている場合は、次の手順に進んで2進数を除算する方法を学習します。
    • 配当 で割った 仕切り そしてそれは判明しました プライベート.
    • 除数を被除数の最初の桁と比較します。除数がこの桁より大きい場合は、除数を2桁の被除数と比較し、以下同様に、除数が問題の数より小さくなるまで続けます。この例では、4と1を比較し、4> 1であることに注意してから、4と17を比較します。
    • 商の最初の桁を除数の下に書きます。 4と17を比較すると、17÷4 = 4で余りがあることがわかります。したがって、除数(4)の下の商の最初の桁として4を記述します。
    • 乗算と減算を行って余りを求めます。商の最初の桁に除数を掛けます。この例では、4 x 4 = 16です。17の下に16を書き込み、17-16を引いて、1の余りを求めます。
    • 比較を繰り返します。除数4を剰余1と比較し、4> 1であることに注意し、被除数の次の桁を「運ぶ」と4を12と比較します。12÷4 = 3なので、剰余なしで3を2番目の桁として記述します。商。最終的な答えは43です。
  2. 2 列は2つの2進数を分割します。 たとえば、10101÷11です。ここで、10101は被除数、11は除数です。計算のための十分な余地を残してください。
  3. 3 除数を被除数の最初の桁と比較します。 2進数の場合、これは10進数よりも簡単です。数値は除数で割り切れないので0と書くか、除数して1と書きます。
    • 11> 1なので、1を11で割ることはできません。商の最初の桁(除数の下)として0を書き込みます。
  4. 4 1になるまで、除数の数を比較し続けます。 この例では:
    • 除数を被除数の2桁と比較します。 11> 10。商の2桁目として0を書き込みます。
    • 除数を被除数の3桁と比較します。 11101.商の3桁目に1を書き込みます。
  5. 5 余りを計算します。 見つかった桁(1)に除数(11)を掛け、その結果を被除数の下(つまり、対応する桁の下)に書き込みます。 1に除数を掛けると、常に除数になることに注意してください。
    • 被除数の下に除数を書きます。この例では、配当の最初の3桁(101)の下に11を書き込みます。
    • 101-11を引くと、10の余りが得られます。2進数を引く方法を覚えていない場合は、この記事を読んでください。
  6. 6 問題が解決するまで、説明した手順を繰り返します。 余りに被除数の次の桁を加算して100を取得します。11100なので、商の4桁目として1を書き込みます。さらなる計算:
    • 100未満で11を書き込み、減算して1の余りを取得します。
    • 配当の最後の桁を余りに追加して11を取得します。
    • 11 = 11なので、商の最後の桁として1を書き込みます。
    • 余りがないので問題は解決しました。答え: 00111 またはちょうど111。
  7. 7 小数点を追加します(必要な場合)。 結果が整数でない場合があります。被除数の最後の桁を使用した後、余りが得られる場合は、被除数に「、0」を追加し、商に「、」を追加して次の桁を「解体」し、計算を続行します。希望する結果が得られるまでこのプロセスを繰り返してから、答えを切り上げます。結果を四捨五入するには、最後の0を削除するか、最後の桁が1の場合はそれを削除して、新しい最後の桁に1を追加します。プログラミングするときは、標準の丸めアルゴリズムの1つに従って、2進数と10進数の間で変換するときのエラーを回避してください。
    • 2つの2進数を除算すると、小数部分が繰り返される可能性があります。これは、10進数を除算する場合よりも頻繁に発生します。
    • 小数点は10進数だけでなく、2進数表記でも使用されることに注意してください。

方法2/2:サプリメント

  1. 1 基本原則を理解します。 2つの数値(10進数と2進数の両方)を除算するには、被除数から除数を減算してから、負の数になるまで剰余から除数を減算します。この場合、実行された減算の数を数える必要があります。たとえば、26÷7を計算します。
    • 26-7 = 19(1減算)
    • 19 - 7 = 12 (2)
    • 12 - 7 = 5 (3)
    • 5-7 = -2。負の数なので、さらに引く必要はありません。回答:3、余り5。この方法では、回答の小数部分は計算されないことに注意してください。
  2. 2 加算方法の基本を理解します。 上記の方法は2進数に適用できますが、2進数の除算をプログラミングするときに時間を節約するより効率的な方法を使用することもできます。この方法は補完法と呼ばれます。たとえば、111-011を引きます(両方の数値は同じ桁数である必要があります)。
    • 2番目の数の補数を見つけます。これを行うには、この数値の各桁を1から減算します。バイナリでは、1を0に、0を1に置き換えるだけです。この例では、011は100になります。
    • 結果に1:100 + 1 = 101を加算します。このプロセスは2の補数と呼ばれ、減算を加算に置き換えることができます。基本的に、この方法では、正の数を引くのではなく、負の数を足します。
    • 結果を最初の数値に追加します。加算演算を書き留めて計算します:111 + 101 = 1100。
    • 結果の最初の桁をドロップして、最終的な答えを取得します:1100→ 100.
  3. 3 上記の2つの方法を組み合わせます。 最初の方法は逐次減算法であり、2番目の方法は2の補数法です。これらのメソッドを1つに組み合わせて、数値を分割するために使用できます(メソッドを組み合わせるプロセスについては以下で説明します)。必要に応じて、2つの方法を自分で組み合わせる方法を考えてみてください。
  4. 4 除数を被除数から減算し、減算を2の補数の加算に置き換えます。 例:100011÷000101。まず、2の補数を使用して、減算100011〜000101を加算に変換します。
    • 2の補数:000101 = 111010 + 1 = 111011
    • 加算:100011 + 111011 = 1011110
    • 最初の桁を削除します:011110
  5. 5 商に1を加えます。 コンピュータプログラムでは、これは商が1つインクリメントされる文字列です。混乱を避けるために紙にメモしてください。一度正常に減算したので、この時点で商は1です。
  6. 6 説明したプロセスを繰り返します。 これを行うには、余りから除数を引きます。余りは最後の計算の結果です。減算演算を加算に置き換えます。2の補数の除数を剰余に加算してから、結果の最初の桁を削除します。各減算の後、商に1を加算します。余りが除数以下になるまで、上記のプロセスを繰り返します。
    • 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の補数法は適用されません。この場合、対応する番号0を下の番号(左側)に追加します。
  • 二項演算をマシン命令に適用する前に、スタックを増加、減少、またはポップする命令を検討する必要があります。