情報処理の基礎、ITエンジニア入門なら

2進数で負(マイナス)の数を表す補数、そして求め方

2進数で負(マイナス)の数を表す補数とは、そして求め方

 

ここでは、2進数で負(マイナス)の数を表す方法である補数とは何なのか、そして、その補数の求め方を解説します。

 

コンピュータの中で使われる2進数では、10進数で負の数を表すときに使うような「ー(マイナス)」の記号を使うことはできません。もちろん「+(プラス)」の記号も使うことができません。

 

つまり、10進数の「-3」を、2進数で「-0011」としたり、「+3」を、「+0011」と表すことはコンピュータにはできないということです。

 

そこで、2進数で負の数を表す方法を解説します。

 

先頭のケタで負の数を表す方法

 

一番簡単に考えられる方法は、一番先頭のケタ(ビット)で「+(プラス)」と「−(マイナス)」を表現する方法です。

 

一番先頭のケタが「0」ならばプラスで、「1」ならばマイナスと決めてしまうのです。

 

例えば、10進数の「+3」は2進数で、そのまま「0011」として、「-3」は、「1011」とします。

 

0011」 → 先頭のビットが「0」なのでプラスと考える
1011」 → 先頭のビットが「1」なのでマイナスと考える

 

このように、先頭のビットでプラスとマイナスを表現します。

 

これを「絶対値表現」と言いますが、実は現代のコンピュータではこの表現方法を使用していることはほぼなく、以下で解説する補数という考え方を使って表現しています。

 

なぜ補数を使うかというと、コンピュータが計算をするときに内部では、引き算を使わずに、引き算を足し算にして計算をしているからです。

 

私たちが初めて習う四則演算(足し算、引き算、かけ算、割り算)も、まず足し算から始まって、十分に足し算ができるようになってから引き算を習いますが、引き算は少し頭を使わないと難しいので、コンピュータとしては、あまり頭を使わずに済むように、引き算であっても足し算として計算をしています。コンピュータは頭がいいと思っていると少し驚きですね。

 

補数を使う方法

 

それでは、引き算を足し算として計算するときに使われる補数を解説します。

 

しかし、いきなり使い慣れない2進数で考えると難しいと思いますので、まずは10進数で補数の考え方を解説していきます。

 

補数とは、負の数を、正の数として表現する方法です。
マイナスの数であっても、プラスの数としてしまおうという考え方なのです。

 

例えば、正の整数である「+45」は、同じ負の整数である「-45」を引けばゼロになります。

 

+45 - 45 = 0

 

それでは、このように、計算をしたら「0」になるように、引き算ではなく、足し算で行おうとするとどうなるでしょうか。

 

+45 + ? = 0

 

となる計算をするわけです。
ここで表れるのが補数という考え方です。

 

補数を使って足し算するときには、足し算をしたときに、ケタ上がりしたケタを無視するという方法を使います。「45」は2ケタの数ですので、3ケタ目を無視するということです。

 

つまり、「45 + ? = 100」となる計算をすればよいということです。実際に計算してみましょう。

 

 

答えは「55」です。実際に「45  +  55 = 100」となり、3ケタ目を無視すれば、「0」になるので、「45 + ( -45) = 0」であることが分かります。

 

45 + 55 = 100 → ケタ上がりした3ケタ目を無視すると「0」になる。

 

つまり、この「55」が「-45」を表す補数ということになります。

 

2進数の補数

 

2進数でも補数の考え方は同じです。上で例をあげた、「45 + 55 = 0」を2進数で考えてみましょう。

 

ちなみに、2進数での補数の求め方ですが、「1の補数」と「2の補数」があるのですが、一般的によく使われているのは「2の補数」なので、「2の補数」を使って解説します。

 

「-45」の2の補数の求め方

 

上で解説したように、「-45」を補数にすると「+55」になりますが、筆算で計算するには2進数は少々難しいので、簡単に2進数の補数を求める方法を以下に以下に解説します。

 

@10進数の「45」を2進数にする。

 

45 = 101101

 

A「1」と「0」を全てひっくり返す。

 

1 0 1 1 0 1
0 1 0 0 1 0

 

※ 単純に「1」を「0」に、「0」を「1」に何も考えずにひっくり返すだけです。

 

B「1」を足す

 


※2進数の足し算はわからない方はこちらの記事をご参考にどうぞ。

 

このように「-45」の2の補数は「010011」ということが分かります。

 

最後に答え合わせとして、ケタ上がりしたケタを無視して、答えが「0」になるか確認しましょう。

 

 

答えは、「1000000」ですが、一番上のケタを無視しますので、答えは「000000」となり、しっかりと「0」になっていますので、しっかりと補数が求められたことがわかります。

 

1000000 = 000000 → ケタ上がりした7ケタ目を無視する

 

 

 


スポンサーリンク

管理人


ホーム サイトマップ
HOME