基本情報技術者試験対策(8)「2の補数表現と小数点形式(1)」

スポンサーリンク
IT系

符号なし整数と符号あり整数

8ビットの2進数で表せる情報は、00000000~11111111の256通りです。 これを10進数に変換すると、 0~255の256通りの0以上のプラスの整数になる。 これを符号なし整数と呼ぶ。

マイナスの値を表す場合は、00000000~11111111の256通りの情報を128 通りずつの2つに分け、一方をプラスの整数とし、 他方をマイナスの整数にする。 これを符号あり整数と呼ぶ。

符号なし整数と符号あり整数のどちらを使うのかは、プログラムを作るときに、データの性質に合わせて指定する。 例えば、 社員数のデータなら、 0以上のプラスだけなので、 符号なし整数を使うことを指定しよう。 利益のデータなら、 プラスもマイナスもあるので、 符号あり整数を使うことを指定しよう。

符合ビット

符号あり整数を使う場合は、 最上位ビットが0ならプラスの整数を表し、 最上位ビットが1ならマイナスの値を表す約束になっている(2の補数表現の場合)。 最上位ビットを見れば、とりあえずプラスかマイナス かがわかるので、この部分を「符号ビット」 と呼ぶ。 8ビットの2進数では、00000000~01111111が0以上のプラスの整数を表し、 11111111~0000000がマイナスの整数を表す。

2進数(8ビット)符号ビット意味(10進数)解説
0000000000全部0 → 0
000000010+1通常の2進数と同じ
011111110+127符号付きで表せる最大の正の値
100000001-128符号付きで表せる最小の負の値(特別な値)
111111111-12の補数表現(1を足すと0になる)

2の補数表現

符号あり整数でマイナスの数を表す方法として、 2の補数表現がある。 これは、コンピュータの内部にある入れ物のサイズが決まっていることを利用して、マイナスのマーク (ー) を使わずに、 0と1だけでマイナスの値を表す方法である。

2の補数表現の例を示してみよう。 データの入れ物のサイズが8ビットの場合、11111111がマイナス1を表す。 なぜなら、 11111111と00000001 を足すと、9ビット目に桁上がりして100000000になるが、 入れ物のサイズが8ビットなので桁上がりの1が消えてしまい、 00000000になるからである。 00000001(イチ)と足して 00000000(ゼロ) になるから、 11111111 は、マイナス1であるとみなすことができる

2の補数表現で「-1」を表す仕組み(8ビットの場合)

項目内容説明
データの入れ物(ビット数)8ビット8ビットで表せる範囲は 0000000011111111
正の1の表現00000001通常の2進数で「1」
-1の表現111111112の補数表現での「-1」
2つを足し算すると…11111111 + 00000001 =
100000000
9ビット目に「1」が桁上がりする
9ビット目(桁あふれ)破棄される → 000000008ビットの入れ物なので、左の「1」は切り捨てられる
結果(8ビット内での和)00000000結果が0になる
結論11111111 は「-1」「1を足すと0になる数」= マイナス1

(参考)8ビットの符号付き整数(2の補数表現)

区分符号ビット2進数の範囲10進数の範囲説明
プラス(0以上)000000000011111110+127符号ビットが 0 のときは正の整数(または0)を表す
マイナス(負の数)11000000011111111-128-1符号ビットが 1 のときは負の整数を表す(2の補数表現

参考)情報処理教科書 出るとこだけ!基本情報技術者[科目A][科目B]2025年版

コメント

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