<補 数>

戻る | 次へ

ホームページ | 元のページ | 補数の定義 | 10進数の補数 | 2進数の補数 


(補数の定義)

任意の数Nの補数(complement)とは、ある基準となる数(基数)からそのNの値を引いた数を意味します。

(補数) = (基数) − N

一方、m進数の補数には「mの補数」と「m−1の補数」の二つがあります。10進数の場合、「10の補数」と「9の補数」があり、2進数の場合、「2の補数」と「1の補数」があります。

(10進数の例)

たとえば、10進数で3桁の数を考える場合、「10の補数」では基数は1000となり、「9の補数」の場合、基数は999となります。

任意の数N

10の補数

9の補数

123

1000−1234

=877

999−123

=876

123の10の補数は877、
123の9の補数は876です。

(2進数の例)

2進数で4桁の数を考える場合、「2の補数」では基数は10000となり、「1の補数」の場合、基数は1111となります。

任意の数N

2の補数

1の補数

0101

1000−0101

=1011

1111−0101

=1010

0101の2の補数は1011、
0101の1の補数は1010です。

補数表現を用いることによってプラス・マイナスを表す符号(+−)を使わずに数値を表現できる利点があります。コンピュータの場合、マイナスの値を補数を用いて表現しています。


(10進数の補数表現)

10進数の補数には「10の補数」と「9の補数」とがありますが、ここでは「10の補数」を用いて説明します。

いま、3桁の10進数を取り上げます。3桁の数の場合、Nの10の補数は「1000−N」です。

3桁の数で表現できるのは0から999までの1000種類です。表現できる1000個のうち半分で正の数を、残りの半分で負の数を表現することにすると、−500から499までの数を表現できるはずです。

 そこで、負の数を補数で表現することにします。言い換えると0から499は通常の表現と同じで、−1は「999」と、−2は「998」と順に表現し、−500は「500」と表現することによって、0から499までと、−1から−500までの数を表現します。

(10進数の補数を用いた演算)

(例1)10進数の補数を用いた演算(解がプラスの場合)

37の10の補数は「963」

65の10の補数は「935」

65マイナス37の計算では

65−37

=65+(37の10の補数)

すなわち、

=65+963

=1028

第4桁目は考慮されない(脱落する)ので、答えは

=28

です。

(例2)10進数の補数を用いた演算(解がマイナスの場合)

一方、37マイナス65の計算では

37−65

=37+(65の10の補数)

=37+935

=972 ←(補数表現を用いた解)

この数は500を超えているので補数表現であり、マイナスの数であることがわかります。

この数を人間がみてわかりやすいように符号(+−)を用いて表すと

=−(1000−972)

=−28 ←(人間にとって見やすい表現)

となります。


(2進数の補数表現)

2進数の補数には「2の補数」と「1の補数」とがありますが、ここでは「2の補数」を用いて説明します。

いま、4桁の2進数を取り上げます。4桁の数の場合、Nの2の補数は「10000−N」です。

4桁の数で表現できるのは2進数で0000から1111(10進数では15)までの16種類です。

0000

1000

0001

1001

0010

1010

0011

1011

0100

1100

0101

1101

0110

1110

0111

1111

表現できる16個のうち半分で正の数を、残りの半分で負の数を表現することにすると、10進数で−8から7までの数を表現できるはずです。

 そこで、負の数を補数で表現することにします。言い換えると0から7は通常と同じ表現を用い、−1から−8は補数で表現します。

正の数(10進数)

正数表現(2進数)

負の数(10進数)

補数表現(2進数)

−8

10000-1000=1000

0111

−7

10000-0111=1001

0110

−6

10000-0110=1010

0101

−5

10000-0101=1011

0100

−4

10000-0100=1100

0011

−3

10000-0011=1101

0010

−2

10000-0010=1110

0001

−1

10000-0001=1111

0000

(2進数の補数を用いた演算)

(例3)2進数の補数を用いた演算(解がプラスの場合)

10進数の6は2進数では「0110」。「0110」の2の補数は「1010」

10進数の2は2進数では「0010」。「0010」の2の補数は「1110」

10進数で6マイナス2の計算を2進数で表すと

0110 - 0010

= 0110 + (0010の2の補数)

= 0110 + 1110

= 10100

第5桁目は考慮されない(脱落する)ので、答えは

= 0100

すなわち、10進数の4です。

(例4)2進数の補数を用いた演算(解がマイナスの場合)

一方、10進数で2マイナス6の計算を2進数で表すと

0010 - 0110

= 0010 + (0110の2の補数)

= 0010 + 1010

= 1100 ←(補数表現を用いた解)

この数は1000を超えているので補数表現であり、マイナスの数であることがわかります。

この数を人間がみてわかりやすいように符号(+−)を用いて表すと

= - ( 10000 - 1100 )

= - 0100 ←(符号を用いた表現)

すなわち、10進数の−4です。


戻る | 次へ

ホームページ | 元のページ | 補数の定義 | 10進数の補数 | 2進数の補数