2の補数について

f:id:ryoutaku_jo:20190402213923p:plain

【結論】

・コンピュータは足し算しか出来ない

・2の補数を用いれば、
 足し算の処理で、引き算が可能

・ 2の補数とは、桁を反転し
 1を足して変換した数値
 変換前の数値の負数として扱える

【目次】

【本題】

コンピュータは足し算しか出来ない

コンピュータは、出力結果だけを見ると
非常に複雑な処理を行っているように見えますが、
処理の最小単位まで辿っていくと非常にシンプルな手法を採用しています。

その一例として、コンピュータは四則計算において、
足し算の処理しか行うことが出来ません。
直接、引き算は出来ないということです。

では、どの様にして引き算を行っているのでしょうか?
そこで登場するのが、「2の補数」です。

2の補数とは

2の補数とは、コンピュータが扱う数値にある加工を施したもので、
これにより負数(数値のマイナス)を表現しています。

2の補数でマイナスに変換した数値と、別の数値を足し算することで、
足し算だけで引き算の結果を求められる様になっています。

では、2の補数に変換する流れをみていきます。

10進数を2の補数へ変換する方法

10進数を2の補数へ変換する際は、下記の様な流れで処理を行います。

1:10進数を2進数に変換する
2:変換した2進数の全ての桁を反転させる
3:反転させた2進数に「1」を足す

具体例として、10進数「13」の2の補数を求めます。

0:13
↓
1:1101(2進数に変換)
↓
2:0010(全ての桁を反転)
↓
3:0011(1を足す)

2の補数を10進数に変換する方法

次は逆に、2の補数を10進数に変換する流れを見ます。

1:2進数の全ての桁を反転させる
2:反転させた2進数に「1」を足す
3:2進数を10進数に変換する

では具体例として、先ほどの計算結果である
2の補数「0011」を10進数に変換します。

0:0011
↓
1:1100(全ての桁を反転)
↓
2:1101(1を足す)
↓
3:13(10進数に変換)

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :116日
今日までの合計時間:1092h
一日あたりの平均学習時間:9.5h
今日までに到達すべき目標時間:1059h
目標との解離:33h
「10,000時間」まで、

残り・・・「8908時間!」