検索

キーワード


2進数の足し算・引き算(加減算)の方法と正の数・負の数、補数について解説!

  • 公開日:2021-03-26 17:36:19
  • 最終更新日:2021-03-29 18:43:55
2進数の足し算・引き算(加減算)の方法と正の数・負の数、補数について解説!

10進数で足し算・引き算(加算・減算)ができるように、2進数でも足し算・引き算ができます。


この記事を読むことで、

・2進数の足し算・引き算(加減算)

・負の数(-)の表し方

・1の補数と2の補数


以上のことが分かります。


また、基数・進数・桁の重みについてより詳しく知りたい方は、

基数とは?IT系国家試験の基本知識、2進数について解説

をご一読ください。基数についてより知ることができます!




2進数の足し算・引き算(加算・減算)

パソコンの写真

2進数の足し算・引き算は、10進数の計算と考え方は変わりません。


方法としては、

①2進数を10進数に変換し、10進数で計算して出た結果を2進数に再変換する

②2進数のまま計算をする


以上の2つがあります。




2進数の足し算(加算)

①2進数を10進数に変換し、10進数で計算して出た結果を2進数に再変換する


メリットは、いつも通りの計算ができる、ということです。

このやり方であれば、いつも通りの計算(10進数での計算)になるため、1が0が…などと考えなくてすみます。


デメリットは、変換する手間が増え、結果が出るまでに時間がかかる、ということです。

1.10進数への変換

2.結果を2進数へ再変換

この変換・再変換は大変手間です。


試験などの場合はおすすめのやり方ではありません。



②2進数のまま計算をする

2進数の足し算


2進数の足し算では、

・0+0=0

・1+0=1(0+1=1)

・1+1=10


以上の3種類で計算ができます。


2進数では「0と1」しか表現できない基数のため、1+1は桁上がりがおきるのです。


試験などの場合、2進数のまま足し算する方法がおすすめです。




2進数の引き算(減算)

2進数の引き算


2進数の引き算では、

・0-0=0

・1-1=0

・1-0=1

・0-1=1


以上の4種類で計算ができます。

0-1=1の計算に関しては、0から1が引けないため、上の桁から“1”を借りてきます。

10進数でも、引き算元の数値が足りない場合は、上の桁から数字を借りてきますよね、それと同じです。


10進数の場合、上から借りてくるものは“10”になります。

2進数の場合も同じく、上から借りてくるものは“10”(10進数に置き換えると“2”)です。


引き算元の数値が足りない場合、上の桁から借りてきます。

・2進数 → 10(10進数では“2”)

・10進数 → 10




負の数(-:マイナス)の表し方

前項では、足し算と引き算の計算のやり方が分かりました。

しかし、これは正の数(+:プラス)の計算にしか使えません。。

数値は正の数だけではなく、負の数(-:マイナス)が存在します。


負の数の計算はどうすればできるでしょうか?


2進数の考え方で、「先頭の桁(先頭ビット)を符号とする」があります。


例えば、8ビット(1バイト)で数値を表すとします。

その場合、先頭の桁(8桁目)を符号として、0→正の数・1→負の数、とします。


正の数・負の数


2進数においては、先頭の1ビットを符号用にすることで、正の数・負の数を表すことができるのです。


しかし、上記の数値を計算してみると、


2進数
 00000110+10000110=10001100


10進数
 6+(‐6)=0


このように、10進数ではきちんと解が“0”になりますが、2進数では解が“0”になりません。


この2進数の計算式を成立させるためには、計算結果が“0”になるように負の数を表現する必要があります。そこで登場するのが「補数」です。2進数ではマイナス値の計算を実現するために、「補数」でマイナス値を表現します。




補数とは?

算数の画像

補数とは、補う数という意味です。

補数には以下の2つがあります。

・その桁で最大値になるために補う数

・次の桁に繰り上がるために必要になる補う数


まず、10進数「528」を例に上げて解説します。


・その桁で最大値になるために補う数(9の補数)

528は3桁の数値です。

3桁の数値で表せる最大値は「999」です。


999にするためには、

x+528=999

x=999-528

x=471


528を999にするには、「471」を足します。

つまり、471という数値を補えば、999になる、ということです。


これを「9の補数」と呼びます。



・次の桁に繰り上がるために必要になる補う数(10の補数)

528は3桁の数値です。

3桁の次の桁は4桁なので、繰り上がったすぐの数値は「1000」です。


1000にするためには、

x+528=1000

x=1000-528

x=472


528を1000にするには、「472」を足します。

つまり、472という数値を補えば、1000になる、ということです。


これを「10の補数」と呼びます。



・その桁で最大値になるために補う数(1の補数)

それでは、2進数「0110」で補数がどうなるかを見てみましょう。

0110は4桁の数値です。

4桁の数値で表せる最大値は「1111」です。


1111にするためには、

x+0110=1111

x=1111-0110

x=1001


0110を1111にするには、「1001」を足します。

つまり、1001という数値を補えば、1111になる、ということです。


これを「1の補数」と呼びます。


1の補数は上記のような計算から求めることもできますが、もっと簡単に補数が分かる方法があります。


元の数値を反転させる、と言う方法です。


0110 → 1001  ①元の数値を反転させる

=1001       ②1の補数


反転させることで、1の補数が得られました。


・次の桁に繰り上がるために必要になる補う数(2の補数)

0110は4桁の数値です。

4桁の次の桁は5桁なので、繰り上がったすぐの数値は「10000」です。


10000にするためには、

x+0110=10000

x=10000-0110

x=1010


0110を10000にするには、「1010」を足します。

つまり、1010という数値を補えば、10000になる、と言うことです。


これを「2の補数」と呼びます。


2の補数は上記のような計算から求めることもできますが、もっと簡単に補数が分かる方法があります。


元の数値を反転させ、+1をする、と言う方法です。


0110 → 1001  ①元の数値を反転させる

1001+1      ②反転させた数値に+1をする

=1010           ③2の補数


反転させ+1で、2の補数が得られました。




2の補数を使った計算

コンピュータにおいて、引き算の計算というものはできません。

そこで、コンピュータでは「2の補数」を使って引き算と同じことを行っているのです。


ここで、前項での計算を補数を使ってやってみましょう。


2の補数


8ビットでの計算をしているため、8ビットから繰り上がりで9ビット目にある“1”は無視をします。


2進数
 00000110+11111010=00000000


2進数でも補数を使うことで、正確な計算ができました。



実際に計算をしてみます。

0110-0011

    +(-0011)

    10000-0011=1101(2の補数)…反転させ、+1

0110+1101=10011
		  桁上がりした数は無視をする

=0011


引き算の計算ができました。


2進数の引き算は、このように「補数」を使うことで計算ができることがわかりました。



まとめ

2進数の足し算・引き算について、分かったでしょうか?

2進数の計算には補数が大変重要になってきます。

理解するには、いくつか計算問題を解いてみていくのが良いでしょう!




【著者】

伊藤

Javaを研修で3か月学んだ、駆け出しのエンジニアです。
現在は、ベンダー資格を取得するため、勉強を日課にできるよう努力中です。

よく読まれている記事