Last Updated on 2024年9月1日 by らくろぐ
Webツール第3弾。プログラムを勉強する上ででつまづきやすい負の表現(2の補数)について、考え方と変換ツールをまとめて紹介します。
Contents
負の数を表現する方法・2の補数
正の整数と負の整数について
ある正の整数に対して、その負の整数はどのような関係になるのでしょうか。数学の学問的な位置づけは説明できませんが、自分自身として以下のように理解しています。
-500は 0を中心として負の方向に500進んだもの。
従って、500とー500は足し合わせると 0 になる。
まずこの関係性が基本と考えています。
2進数で負の整数を表現するには
では、次は2進数で考えてみましょう。
5は2進数で 0101 と表現しますね。では2進数でー5はどうやって表現するのでしょうか?
先ほどの考えをもとにすると、5と -5は 0になります。
0101と足し合わせて0になる2進数があれば負の表現ができることになりますね。
仮に、0101(5)を反転させてみると1010となります。両者を合わせてみましょう。
0101+1010=1111 →最上位ビットを符号付きと考えると -7となってしまいます。これでは0になりません。
0になるためにはさらに1を加えることが必要です。
つまり、1111+1→ 1 0000 最上位ビットは符号となり、下位4ビットが0すなわちこれは桁上りが発生し、合わせて0となりました。
このことから2の補数は以下のようなルールと言えます。
2進数-5は、5を反転させ、1を加えたもの
5 → 0101
5 → 1010 + 1→1011
これでー5が表現できました。
2の補数のまとめ
前述の方法を再度まとめましょう。
2の補数
負の正数を2進数に変換するとは、その負の整数の符号を反転した整数に対して「足し合わせた時に 0
になるために」1を加算することになります。
この結果が正数の2進数に対する「2の補数」と表現します。
- 整数を2進数に変換する
- 各桁の
0
と1
を反転する
- 反転後の2進数に
1
を足す
これで2進数の補数(正の整数の負の値)を表現できました。
2進数の補数を計算するツール
2進数の補数の概念が整理できたところで、2進数の補数を変換するツールを作りました。入力した数値を正の整数(2進数)を2の補数に変換してくれるツールです。
コメントを残す