補数とは

マトリックス基本情報



補数表現とは

補数とは、補う数」という意味で、「基数の補数」と「減基数の補数」という2種類の補数が存在します。

基数の補数

「元の数」と「補数」を足した場合に桁上がりが発生する数のうち「最小」の数のことです。
この桁が上がり正しい表現ができないことを『桁あふれ』あるいは『オーバーフロー』と言います。
例えば、10進数の「3」という数に「7」を足すと、桁が1つ上がり「10」となり、「7」は10進数における「3」に対する「10の補数」といいます。
2進数では「2の補数」といい、コンピュータでは負の数をあらわすために使われています。

減基数の補数

「元の数」と「補数」を足すと桁上がりが発生しない数のうち、「最大」の数が補数となります。
例えば、10進数の「3」という数に「6」を足すと、桁内の最大値「9」となり、「6」は10進数における「3」に対する「9の補数」といい、2進数では「1の補数」といいます。

補数表現を使うメリット

補数を使うことによってもたらされる最も大きなメリットは、「マイナス記号を使わずに負の数を表現することができる」という点です。

例)次のような計算をしたいとします。
1183-172=1011

ところがこの引き算という概念が使えない場合、足し算で同じ計算を行う方法があります。それに活用できるのが10の補数です。
今回は最大4桁の数を計算に使うので、「10000」がベースとなります。よって172の補数は、「9838」です。ここで「172」を引く代わりに、この「9838」を足してみます。

1183+9838=11021

この結果から最上位の桁にある「1」を取り除くことで、答えである「1021」を得ることができました。
常に上手くいくのか不思議に思われるかもしれませんが、式を分解してみると次のようになります。

1183+(10000-172)=10000+1021

このように両辺からそれぞれ+10000を取ると、元の式のままであることが分かります。

1の補数と2の補数の違い

2の補数とは

2の補数とは、基数(2進数)の補数(足すと桁が1つ上がる数のうち最も小さい数)のことです。

2の補数の前提

2進数の正負の値はbit長を定義されて表現されることが決まっています。
また2進数の多くは、ほぼ8bit(1Byte)となっています。

2進数の正・負の違い表(8bit)

2進数10進数 符号なし(+)10進数 符号あり(+ -)
0000000000
0000000111
0000001022
01111111127127
10000000128-128
10000001129-127
11111110254-2
11111111255-1

2進数が7桁までは符号つきも符号なしと同様に値が大きくなっていきます。
しかし、2進数が8桁(最も大きい桁)に繰り上がった時、10進数側が符号つきであれば、『-』マイナスに変化します。
その後値が最大値になるにつれて、-2,-1と値が収束していきます。

2の補数の計算方法

2進数のマイナス表現

変換方法( + ⇔ – )

変換したい値を反転+1でできます。

例)(116)10の2進数を変換します。

  01110100 (116)10 変換したい値
     反転
  10001011 bit反転した値
+              1
  10001100 (-116)10

  (116)10のマイナス表現は10001100となります。
答えが、あっているかの計算は反転する前の値を足して0になっていれば正解です。

    01110100 (116)10
+ 10001100 (-116)10
  100000000
今回は8bitと決められているため桁あふれ(9桁め)は捨てられます

1の補数とは

1の補数とは、減基数(2進数)の補数(足しても桁上がりしない数のうち最も大きい数)のことです。

1の補数の計算方法

変換した値を反転した値が1の補数です
01110100 変換したい値
      反転
10001011 bit反転した値

答えが、あっているかの計算は反転する前の値を足して全ての値が最大になっていれば正解です。

    01110100
+ 10001011
    11111111



IT・Web・ゲーム業界のエンジニア転職なら【Tech Stars Agent】

コメント

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