戻る 符号つき2進数 (signed binary)



2 進数 で負の数を取り扱う場合、 「符号つき 2 進数」 を使用します。

「符号つき 2 進数」 といっても、 2 進数の前に "+" や "−" の記号がついているわけではありません。

下表は、 8 桁の 2 進数について、 符号つき 2 進数と符号なし 2 進数を比較したものです。
符号つき 2 進数は最上位ビット (MSB: most significan bit) が負の数を表し、 これを符号ビット (sign bit) といいます。 赤く表示しているのが符号ビットです。

符号なし 2 進数符号つき 2 進数
2 進数 10 進数 2 進数 10 進数 
 00000000  00000000 
0000000100000001
0000001000000010
01111101125  01111101125 
01111110126  01111110126 
01111111127  01111111127 
10000000128  10000000-128 
10000001129  10000001-127 
10000010130  10000010-126 
11111101253  11111101-3 
11111110254  11111110-2 
11111111255  11111111-1 

最上位ビット (MSB) は負の数を表しますから、 8 ビットの符号つき 2 進数では、 これが "1" の場合 -1 × 27 = -128 になります。 したがって上表の通り、 8 ビットの符号つき 2 進数、"1000000" は -128 で、 "1000001" は -127、 "11111111" は -1 です。
符号ビットが "0" であれば、 符号なし 2 進数と全く同じです。
8 ビットの符号なし 2 進数は 0 〜 255 の整数を表すのに対して、 符号つき 2 進数は -128 〜 127 の整数を表します。 8 ビットの 2 進数は、 どちらも 256 種類の数字を表すことができます。

符号つき2進数と符号なし2進数






下図は、 符号つき 2 進数と、符号なし 2 進数を分かりやすく表しています。
最初は符号なし 2 進数として表示されていますが、 符号つき/符号なし 切替ボタン をクリックすると 符号つき/符号なし が切り替わります。




2 進数の数字や下のボタンをクリックすると、 値を自由に変えることができます。
「レ」 ボタンをクリックすると、数値はクリアされて 0 になります。
「▲」 ボタンをクリックすると数値はひとつ大きく、 「▼」 ボタンをクリックするとひとつ小さくなります。







符号つき 2 進数も符号なし 2 進数も、−や+の記号がついていないので、 見た目で区別できません。
"10110001" は -79 なのか 177 なのか分かりませんが、 構わないのでしょうか?
符号つき2進数と符号なし 2 進数が混在していると、 ヒトには区別できませんから、 もちろん困ります。
私の借金が貯金に変わる… のなら困りませんが。

ヒトには区別できませんが、 幸いなことに、 これらはコンピュータの中で使用されています。
コンピュータはこれらのデータをプログラムに従って処理していきますが、 そのプログラムには、 これは符号付き2進数として処理しなさい、 これは符号なし2進数として計算しなさい、 というようなことが逐一指定されています。
ヒトは区別できなくても、 コンピュータはプログラムの指示に従って正しく処理できますから、 問題はないのです。