2進数と10進数の関係はどうなっていますか?【マイナス編】

記事
IT・テクノロジー
今回は少しだけややこしいです。【2進数】の最後の難関です。

それでは説明を始めます。
2進数を「マイナス値」として扱うには、『補数』という物を使います。やり方は、

1)2進数の各桁の「1」と「0」を反転させる (1の補数)
2)1の補数に「1」を加算する (2の補数)

補数とは「補う数」という意味で、「基数の補数 ( 2の補数)」と「減基数の補数 ( 1の補数)」という2種類の補数が存在します。

1の補数(減基数の補数)とは、「足しても桁上がりしない数のうちの最も大きい数」のことです。

2の補数(基数の補数)とは、「足すと桁が1つ繰り上がる数のうちの最も小さい数」のことです。

【例1】例えば、10進数の「−1」を2進数 にする場合、
10進数「1」を4桁(4ビット)で2進数に変換し「0001」 にします。

1)「1の補数」にします。
2進数の「0」と「1」を全て反転(逆転)します。
「0001」→「1110」

2)「2の補数」にします。
反転した「1110」に「0001」を加算します。
1110 + 0001 = 1111

1111」これが2進数で表現した「-1」です。

なぜこれが「-1」かというと
10進数でも 同じ値の整数と負数を加算すると「0」になります。
(+1) + (-1) = 0 

同じ様に
「0001」+「1111」=「10000」
になるんですが、今回は4桁(4ビット)で2進数を表現しているので先頭の「1」は、桁上がりして除かれます。
そうすると残ったのは「0000」で、同じ様に「整数+負数」加算で「0」になります。
ここで言う2進数「1111」は、10進数の「-1」の事になります。



【例2】例えば、10進数の「−10」を2進数 にする場合、

10進数「10」を4桁(4ビット)で2進数に変換し「1010」 にします。

1)「1の補数」にします。
2進数の「0」と「1」を全て反転(逆転)します。
「1010」→「0101」

2)「2の補数」にします。
反転した「0101」に「0001」を加算します。

2進数の加算「1+1」は、結果は「0」 になり「1 の繰り上がり」が起こりますが、それはこの計算だと1桁目と2桁目の話です。
0101 + 0001 = 0110

0110」これが2進数で表現した「-10」です。

「1010」+「0110」=「10000」
になるんですが、4桁(4ビット)で2進数を表現しているので先頭の「1」は、桁上がりして除かれます
そうすると残ったのは「0000」で、同じ様に「整数+負数」加算で「0」になります。
ここで言う2進数「0110」は、10進数の「-10」の事になります。

2進数は0と1を反転して1の補数(減基数)にして、それに2進数の1を加算することによって2の補数(基数)にすると必ず桁上がりを起す→「マイナス値」を表現することが出来るのです。

なぜこんな面倒なこの仕組みになったのは、コンピュータは基本、2進数で計算処理を扱うことと、実は引き算を行うときは「マイナス値を加算処理する」ことで「引き算」をしようとしている事が理由です。

すこし面倒ですが、考え方に慣れると仕組みはそれ程複雑ではありません!

これでコンピュータ内部で基本動くための状態である【2進数】のお話は、「整数」、「小数」、「マイナス」ときましたので、とりあえずおしまいです。
国家試験であるITパスポート試験でも「テクノロジ」の範囲に必ず入っているので、ちゃんと理解しておけば「ITエンジニアになる近道」になりますよ。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す