足し算の基本
1 + 1 で桁が増える
0 + 0 = 0そのまま00 + 1 = 1そのまま11 + 0 = 1そのまま11 + 1 = 1020を書き、1を繰り上げる二進数の足し算も、右の桁から順に計算します。ゼロたすゼロはゼロ。ゼロたす一と、一たすゼロは一です。一たす一は二ですが、二進数には二という数字がありません。そこで、ゼロを書き、左の桁へ一を繰り上げます。
IT基礎 / LESSON 05
10進数と同じように右から一桁ずつ。違うのは、使える数字が0と1だけということです。
足し算の基本
0 + 0 = 0そのまま00 + 1 = 1そのまま11 + 0 = 1そのまま11 + 1 = 1020を書き、1を繰り上げる二進数の足し算も、右の桁から順に計算します。ゼロたすゼロはゼロ。ゼロたす一と、一たすゼロは一です。一たす一は二ですが、二進数には二という数字がありません。そこで、ゼロを書き、左の桁へ一を繰り上げます。
繰り上がり
前の桁から繰り上がってきた一も、忘れずに足します。一たす一たす一は、十進数では三。二進数では、いち、いち、です。その桁には一を書き、さらに一を左へ繰り上げます。
足し算してみよう
11
1011
0110
-------
10001
1110 + 610 = 1710
二進数の、いち、ゼロ、いち、いち、と、ゼロ、いち、いち、ゼロ、を足します。右端は、一たすゼロで一。次は、一たす一で、ゼロを書いて一を繰り上げます。次も、ゼロたす一たす繰り上がりの一で、ゼロを書いて一を繰り上げます。最後も、一たすゼロたす一です。結果は、いち、ゼロ、ゼロ、ゼロ、いち、になります。
引き算の基本
1 − 0 = 1そのまま11 − 1 = 0同じなので00 − 0 = 0そのまま0102 − 1 = 1左から1を借りる引き算も右から計算します。ゼロから一は引けないので、左の桁から一を借ります。二進数で左から借りた一は、今の桁では、いち、ゼロ、つまり十進数の二になります。二から一を引くので、今の桁の答えは一です。
引き算してみよう
1010 − 0011 ------- 0111
1010 − 310 = 710
二進数の、いち、ゼロ、いち、ゼロ、から、ゼロ、ゼロ、いち、いち、を引きます。右端では、左から一を借りて答えは一です。次の桁でも一を引く必要がありますが、すぐ左の桁はゼロです。そこで、さらに左にある一から、順番に借りてきます。結果は、ゼロ、いち、いち、いち。十進数でも、十ひく三は七なので、答えを確認できます。
固定ビット幅
4ビットの符号なし整数:00002 〜 11112
表せる範囲:0 〜 15
11112 + 00012 = 100002
正しい答えには5ビット必要 → 4ビットには収まらない
コンピューターでは、数を保存する桁数が決められていることがあります。四ビットの符号なし整数なら、表せるのはゼロから十五までです。十五に一を足した答えは十六ですが、二進数では五桁必要です。四ビットの箱には収まらない。この状態を、オーバーフローと呼びます。
下位4ビットだけを残す方式では0000になります。実際の通知や処理は、CPUやプログラムの仕組みによって異なります。
足し算を確認
二進数の、ゼロ、いち、ゼロ、いち、と、ゼロ、ゼロ、いち、いち、を足してみましょう。右端から、一桁ずつ計算してください。
正解は B:10002
正解です。答えは、いち、ゼロ、ゼロ、ゼロ。十進数では、五たす三で八です。四ビット以内に収まっているので、オーバーフローはありません。
繰り上がりを確認しましょう。右端は、一たす一なので、ゼロを書いて一を左へ繰り上げます。
最後の確認
11002 − 01012 = ?
11102 + 00112 は4ビットに収まる?
最後に二つ確認します。まず、いち、いち、ゼロ、ゼロ、から、ゼロ、いち、ゼロ、いち、を引いてください。次に、四ビットの、いち、いち、いち、ゼロ、と、ゼロ、ゼロ、いち、いち、を足したとき、答えが四ビットに収まるか考えてみましょう。
01112 / 4ビットではオーバーフロー
一つ目の答えは、ゼロ、いち、いち、いち。十進数では、十二ひく五で七です。二つ目の正確な答えは、いち、ゼロ、ゼロ、ゼロ、いち。五桁必要なので、四ビットではオーバーフローします。下位四ビットだけなら、ゼロ、ゼロ、ゼロ、いち、が残ります。
0と1でも、繰り上がりと借りの仕組みは同じです。