X
wikiHowは「ウィキ」サイトの一つであり、記事の多くは複数の著者によって共著されています。 この記事は、匿名の筆者を含む50人が執筆・推敲を行い、時間をかけて編集されました。
この記事は24,288回アクセスされました。
2進法の数の引き算は、10進法の数の引き算とは少し異なりますが、以下の手順に従えば、10進法と同じくらいあるいはそれ以上に簡単に解くことができます。
ステップ
方法 1
方法 1 の 2:繰り下げ法を使います
方法 1
-
1数を通常の引き算の問題と同様に並べます。大きな数を上に、小さい数を下にします。小さい数の方が桁数が少ない場合、10進法(10の基数)の引き算の問題を解くときと同じように、右揃えにします。[1]
-
2基本的な問題に挑戦します。2進法の引き算の中には、10進法と全く変わらないものもあります。列を揃えて、右から順に各位の答えを出します。以下は簡単な例です。
- 1 - 0 = 1
- 11 - 10 = 1
- 1011 - 10 = 1001
-
3より複雑な問題に挑戦します。2進法の引き算ができるようになるには、たった一つだけ特別な「ルール」を覚える必要があります。このルールは、「0 – 1」という列を計算するために左の位から「借りる」方法です。[2] この章の残りの部分で、繰り下げ法を使って例題を解いていきましょう。 まず一問目です。
- 110 - 101 = ?
-
42つ目の位から「借ります」。右の列(1の位)から始めると、「0 – 1」を解く必要が生じます。そのためには、左の位(2の位)から「借りる」必要があります。これは2段階で行います。
- まず、1を斜線で消し、0に置き換えます。すると、次のようになります10
10 - 101 = ? - 元の数から10引いたので、この「借りた」数を1の位に足すことができます。10
1100- 101 = ?
- まず、1を斜線で消し、0に置き換えます。すると、次のようになります10
-
5右端の列を解きます。これで各列が通常通りに解けます。この問題の右端の列(1の位)の解き方は以下の通りです。[3]
- 10
1100- 101 = ? - 右端の列は現在10 - 1 = 1となっています。これの解き方が分からない場合は、 「問題を10進法に変える」方法を参照しましょう。
- 102 = (1 x 2) + (0 x 1) = 210(下付きの値は、その数の基数を示しています)
- 12 = (1x1) = 110
- そのため、この問題を10進法にすると2 - 1 = ?となり、答えは1です。
- 10
-
6問題を解き終えます。問題の残りの部分は簡単に解けます。右から左に、一列ずつ解いていきます。
- 10
1100- 101 = __1 = _01 = 001 = 1
- 10
-
7難しい問題に挑戦しましょう。2進法の計算では借りることが頻発し、1列解くのに何度も借りる場合もあります。11000 - 111の解き方を例として示します。0からは「借り」られないので、何か借りられる数字に出会うまで、左から借り続ける必要があります。[4]
- 10
110000 - 111 = -
10
111001000 - 111 = (10 - 1 = 1だということを思い出しましょう) - 10
111001100100- 111 = - きれいに書き直すと次のとおりです。101110
0- 111 = - 一列ごと解きます。_ _ _ _ 1 = _ _ _ 0 1 = _ _ 0 0 1 = _ 0 0 0 1 = 1 0 0 0 1
- 10
-
8答えを確認します。答えを確認する方法には3通りあります。[5] 早い方法の1つは、 2進法電卓をネットで探し、問題を入力する方法です。 残りの2つの方法も有益です。試験では自力で確認する必要があるうえ、これらの方法では2進法により馴染むことができるからです。
- 2進法で足し算をして計算を確かめます。答えと小さい方の数を足すと、大きい方の数になるはずです。最後の例題(11000 - 111 = 10001)の場合、10001 + 111 = 11000なので、最初の大きい方の数になります。
- 別の方法として、それぞれの数を2進法から10進法に変え、答えが正しいか確認する方法があります。同じ例題(11000 - 111 = 10001)の場合、それぞれの数を10進法にすると24 - 7 = 17となります。これは正しい式なので、答えが正しいことを意味します。
広告
方法 2
方法 2 の 2:補数法を使います
方法 2
-
110進法の引き算と同様に2つの数を並べます。この方法はより効率的なプログラムを使うので、コンピューターで2進法の引き算をする際に使われます。通常の10進法の引き算の問題を解きなれている人にとっては、恐らくより難易度の高い方法ですが、プログラマーとして理解するのには有益です。[6]
- 例題として101 - 11 = ?を解きます。
-
2両方の数の数字の個数を同じにするため、必要に応じて頭に0を足します。例えば、101-11を101-011に変えて、どちらとも3つの数字にします。
- 101 - 011 = ?
-
32項目の数字を入れ替えます。2項目の全ての0を1に、全ての1を0に変えます。例題の場合、2項目は次のようになります。
011→ 100- 何をしているのかと言うと、「1の補数をとっている」のです。つまり、1から各位の数を引いています。「入れ替え」の近道の方法は2進法で有効です。入れ替えた結果には2通りしか無いためです。1 - 0 = 1と1 - 1 = 0です。
-
4新しい2項目に1を加えます。「反転」させた項を得られたら、できた数に1を加えます。例題の場合、100 + 1 = 101となります。
-
5新たな問題を2進法の足し算の問題として解きます。2進法の足し算の方法を使って、新しい項を元の項に足します。引き算ではありません。
- 101 + 101 = 1010
- これが理解できない場合、2進法の足し算を復習しましょう。
-
6最初の数を捨てます。この方法では、答えが必ず一桁多くなります。例えば例題の場合、3桁の数字の問題(101 + 101)だったのが、答えは4桁になっています。単純に最初の数字を斜線で消すと、最初の引き算の答えが得られます。 [7]
-
1010 = 10 - よって、 101 - 011 = 10
- 余分な数字が無い場合、小さな数字から大きな数字を引いてみましょう。ポイントの欄を見て、そのような問題の解き方を確認し、再度挑戦しましょう。
-
-
7この方法を10進法で試してみます。この方法は「2の補数」法と呼ばれています。「反転した数」は「1の補数」であり、それに1を足すからです。[8] この方法がなぜ成り立つのかより直感的に理解したい場合は、10進法で試してみましょう。
- 56 - 17
- 10の基数を使っているので、2項目(17)の「9の補数」を使います。各位の数字を9から引きます。99 - 17 = 82
- これを足し算の問題に変換すると56 + 82となります。これを元の問題(56 - 17)と比べると、99を加えたことが分かります。
- 56+82=138ですが、元の問題に99を足して変換したので、答えから99を引く必要があります。上記の2進法と同様に、近道の方法を使います。全体の数に1を加え、一番左の数(100を意味する)を消します。
- 最初の問題56-17の最終的な答えは138 + 1 = 139 →
139 → 39 となります。
広告
ポイント
- 小さい数から大きな数を引くためには、数の順序を変え、引き算をします。そして答えに負の記号を加えます。例えば、2進法で11 – 100という問題を解く場合、100 - 11を解いて、答えに負の記号を加えます(この決まりは、2進法だけでなくどの基数の引き算にも当てはまります)。
- 数学では、補数法はa - b = a + (2n - b) - 2n という恒等式に使われます。nがbの桁の数だとすると、2n - b は反転させた数に1を加えた値になります。
広告
出典
- ↑ http://www.math.ucla.edu/~radko/circles/lib/data/Handout-602-720.pdf
- ↑ http://www.math.ucla.edu/~radko/circles/lib/data/Handout-602-720.pdf
- ↑ http://www.math.ucla.edu/~radko/circles/lib/data/Handout-602-720.pdf
- ↑ http://www.math.ucla.edu/~radko/circles/lib/data/Handout-602-720.pdf
- ↑ http://www.exploringbinary.com/binary-subtraction/
- ↑ http://www.exploringbinary.com/binary-subtraction/
- ↑ http://courses.cs.vt.edu/csonline/NumberSystems/Lessons/SubtractionWithTwosComplement/index.html
- ↑ http://courses.cs.vt.edu/csonline/NumberSystems/Lessons/SubtractionWithTwosComplement/index.html
このwikiHow記事について
他言語版
English:Subtract Binary Numbers
Español:restar números binarios
Português:Subtrair Números Binários
Русский:вычитать двоичные числа
Deutsch:Binärzahlen subtrahieren
Français:soustraire des nombres binaires
Bahasa Indonesia:Melakukan Pengurangan Bilangan Biner
Nederlands:Binaire getallen van elkaar aftrekken
ไทย:ลบเลขฐานสอง
العربية:طرح الأعداد الثنائية
한국어:이진수 뺄셈하는 법
Tiếng Việt:Trừ hai số nhị phân
中文:计算二进制减法
このページは 24,288 回アクセスされました。
この記事は役に立ちましたか?
広告