【基本・応用情報】1の補数・2の補数と引き算処理について(離散数学)

IT
スポンサーリンク

スポンサーリンク

初めに

こんにちは、情報系大学生のゆうき(@engieerblog_Yu)です。

前回は、2・8・10・16進数の基数変換について解説しました。

今回は、コンピュータで負の数を表すために補数について解説していきたいと思います。

コンピュータは0,1だけでどうやって負の数を表す?

コンピュータは電気のONを1、OFFを0に対応させて動いています。

前回の記事で、2進数で正の数を表現する方法について解説しました。

しかし、負の数はどうやって表現するのでしょう?

0,1のみを使って負の数を表現するために考えられた数が補数です。

まずは補数について解説していきます。

補数とは?

補数とは文字通り補う数のことで、以下の2種類があります。

最大値を得るために補う数(1の補数)

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

2の補数が負の数と同等になります。

なぜそうなるのかは後ほど解説します。

まずは1の補数から解説します。

1の補数について

最大値を得るために補う数と言われても分かりづらいと思うので、今回は、2進数で表される五桁の10110という数で考えていきます。

1の補数は、五桁の数の最大値(11111)から10110を引いた数になります。

11111-10110=01001(1の補数)

次に2の補数についても解説します。

2の補数について

2の補数は、1の補数に1を足すことで求めることができます。

つまり10110の補数は、01001(1の補数)+00001=01010(2の補数)となります。

ねこすけ
ねこすけ

こんなことをする意味がわからないにゃ。

ゆうき
ゆうき

なぜ2の補数が大切になってくるかはこれから分かるよ。

1の補数は加算して、同じ桁数で最大値になる数

2の補数は1の補数に1足した数

2の補数と負の数の関係

実は、2の補数=負の数となります。

例えば、(3)(-3)=0を2ビットの2進数で表してみます。

11+01(2の補数)=100

この時、溢れかえった1は無視できるので100→00となります。

つまり3-3=0を表現することができ、負の数と同等の振る舞いをするわけです。

2の補数=負の数

2の補数を使った減算処理

2の補数=負の数として用いることができるので、2の補数を使えば加算だけでなく、減算できます。

例えば5を引きたいとき、5の2の補数を加算することで減算することができます。

2の補数を加算することで減算することができる

また2の補数の最上位ビットは符号として扱われます。

以下で、正と負を見分けることができます。

最上位ビットが1の場合→負の数

最上位ビットが0の場合→正の数

まとめ

1の補数は加算して、同じ桁数で最大値になる数

2の補数は1の補数に1足した数

2の補数=負の数

2の補数を加算することで減算することができる

今回の記事では、2の補数と減算処理について解説しました。

今回の内容は、情報技術者試験に含まれている内容になります。

情報系の大学生の方、情報系に興味がある方、情報系に就職を考えている方は情報技術者試験をとることをおすすめします。

ざっくり以下のようなイメージです。

基本情報技術者→情報系の学部1・2年で学ぶ内容

応用情報技術者→情報系の学部3・4年で学ぶ内容

特に応用情報技術者試験に合格すると、情報系の就職にかなり有利になったり、会社で優遇されたりします。

私が情報技術者試験の学習に使った、おすすめ書籍は以下になります。

めちゃくちゃわかりやすいので、情報系でない方でもすらすら読み進めることができると思います。

おすすめ書籍

ゆうき
ゆうき

最後まで読んでいただきありがとうございました。

関連記事

IT
スポンサーリンク
Yukiをフォローする
autotech

コメント

タイトルとURLをコピーしました