符号なし整数と符号あり整数
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進数) | 解説 |
---|---|---|---|
00000000 | 0 | 0 | 全部0 → 0 |
00000001 | 0 | +1 | 通常の2進数と同じ |
01111111 | 0 | +127 | 符号付きで表せる最大の正の値 |
10000000 | 1 | -128 | 符号付きで表せる最小の負の値(特別な値) |
11111111 | 1 | -1 | 2の補数表現(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ビットで表せる範囲は 00000000 ~ 11111111 |
正の1の表現 | 00000001 | 通常の2進数で「1」 |
-1の表現 | 11111111 | 2の補数表現での「-1」 |
2つを足し算すると… | 11111111 + 00000001 =100000000 | 9ビット目に「1」が桁上がりする |
9ビット目(桁あふれ) | 破棄される → 00000000 | 8ビットの入れ物なので、左の「1」は切り捨てられる |
結果(8ビット内での和) | 00000000 | 結果が0になる |
結論 | 11111111 は「-1」 | 「1を足すと0になる数」= マイナス1 |
(参考)8ビットの符号付き整数(2の補数表現)
区分 | 符号ビット | 2進数の範囲 | 10進数の範囲 | 説明 |
---|---|---|---|---|
プラス(0以上) | 0 | 00000000 ~ 01111111 | 0 ~ +127 | 符号ビットが 0 のときは正の整数(または0)を表す |
マイナス(負の数) | 1 | 10000000 ~ 11111111 | -128 ~ -1 | 符号ビットが 1 のときは負の整数を表す(2の補数表現) |
(参考)情報処理教科書 出るとこだけ!基本情報技術者[科目A][科目B]2025年版
コメント