負の数の表現
学習の目的
-
1. 2進数での負の数の表現
2進数では“正の数”はそのまま表せますが、“負の数”はどのように表すのでしょうか?
そういえば、2進数の減算は2の補数を加算すると学習しましたが、そもそも負の数はどうやって表すの?
きっと、「ー(マイナス)記号」をつければいいんだよ。
学習の目的
1. 2進数での負の数の表現
2進数では“正の数”はそのまま表せますが、“負の数”はどのように表すのでしょうか?
そういえば、2進数の減算は2の補数を加算すると学習しましたが、そもそも負の数はどうやって表すの?
きっと、「ー(マイナス)記号」をつければいいんだよ。
2進数は、0と1しか使わないため、符号である「+/ー」の記号は使いません。
負の数を直接表すのは難しいので、ある決まった方法を使って表します。その方法を2の補数といいます。
負の数を2の補数を使って表現した場合、2の補数の値は正負(+/ー)を入れ替える性質があります。
2の補数は減算を加算で求めるだけでなく、2の補数そのものが負の数を表しています。
ある負の10進数を2進数で表現する方法
まず最初に、正の数の2進数を作ることがポイントです!正の数の2進数を作ったら、その2進数を2の補数にすると負の数を表す2進数になります。
具体的に(-1)10を4ビットの2進数で表すときの例を見てみましょう。
(-1)10を4桁の2進数で表すためには、次のように行います。
① (+1)10を4桁の2進数で表します。
② ①で作成した2進数を反転した値を求めます。
③ ②で作成した2の補数(1110)2に1を加算します
2の補数(1111)2が(-1)10を表す2進数です。
(1111)2は(15)10と間違えそう。
なるほど。正の数を2進数で表してから2の補数を作ってしまえば、その数が負の数なのですね。
(1111)2の2の補数を計算する
(-1)10を表している2進数(1111)2の値の2の補数を計算してみると次のように(1)10なります。
(0001)2=(1)10 です。(-1)10の2の補数は(1)10なので、2の補数を求めると符号が変わることがわかりました。
(2)10、(3)10・・・と順に2の補数を作っていくと4桁(ビット)の場合、次のようになります。
2の補数を使った4桁(ビット)の数の表現
2進数4桁(ビット)の場合は、-8~+7までの16種類の数字が表現できることがわかりました。
そうか 4ビットでと 24=16 で16種類表せるのは変わらないけれど、表現範囲が変わるのですね。
負の数は半分の8種類、0と正の数で8種類の16種類です。
2の補数を使った時の表現範囲は次の計算式で求めることができます。
n桁(ビット)の2の補数表現の表現範囲
-2n-1~2n-1-1
2進数4桁(ビット)の表現範囲は、この計算式に当てはめれば計算できるのか。
2進数4桁の表現範囲を計算する場合は次のように公式に当てはめて計算します。
2の補数を使った2進数4桁の表現範囲
-24-1~24-1-1
=-23~23-1
=-8~7
2の補数を使った場合、負の数も表現できるところに注意しましょう!
実は2の補数を使った2進数は、見ただけでその数が正の数か負の数か分かります。
続いて、「0と正の数」及び「負の数」で分けた表の先頭の値を確認してみましょう。
黄色になっている、2進数の先頭の値を見て気づくことはありますか?
0と正の値は「0」から始まって、負の数は「1」から始まってます。
2の補数を使った表現では、2進数の先頭の桁(ビット)は符号ビットと呼ばれ、負の値なら1、それ以外は0から始まります。
「+/-」の記号はないけれど先頭の値を見たら、正の数か、負の数かは分かるってことですね。
そういうことです。
0は正の数でも、負の数でもないですが、符号ビットは「0」です。0の2の補数を求めるとどうなるか確認しましょう。
0の2の補数を求めると次のようになります。
0は正の数でも、負の数でもないので2の補数を計算しても値は変わりません。
このように、先頭ビットを見れば、正の数か負の数かが分かります。
|
符号ビット |
2進数の先頭桁(ビット)のことで、数値の正負の符号を表す。 |