情報I 学習サイト
必須45分

補数と負の数

学習目標
学習の作業時間の目安
読む(補数の定義、表せる範囲)15分
例題を追う(−3 の作り方、引き算の足し算化)10分
自力演習(段階別の練習)15分
振り返り(確認問題)5分

1. 補数とは

nビットの2進数で、ある数と足して 2n(ちょうど桁あふれする値)になる数を補数といいます。実際には「各桁を反転して1を足す」と求められます。

例: 3(10) を8ビットで表すと 0000 0011。−3 は 1111 1101 になります(反転すると 1111 1100、1を足すと 1111 1101)。

00000 00011 00102 00113 01004 01015 01106 01117 1000−8 1001−7 1010−6 1011−5 1100−4 1101−3 1110−2 1111−1 青: 0〜7 の正の数。赤: −8〜−1 の負の数。先頭の1が負を表す。
図1 4ビットの補数表現。同じ 1101 でも、補数として読めば −3、2進数として読めば 13 になる。

2. 表せる範囲

nビットの補数表現では、−2n−1 以上 2n−1−1 以下の整数を表せます。8ビットなら −128〜127 です。

例題: −3 を4ビットで表す

  1. 3 を4ビットで書く: 0011
  2. 各桁を反転する: 1100
  3. 1を足す: 1100 + 1 = 1101
  4. 答え: 1101(2) = −3(図1 の表と一致する)

確認: 1101(2) に 0011(2) を足すと 1 0000(2)。桁あふれした1を捨てると 0000 になり、−3 + 3 = 0 と合う。

3. 引き算を足し算で行う

5 − 3 は、−3 の補数 1111 1101 を使って 0000 0101 + 1111 1101 = 1 0000 0010 となります。桁あふれした1を捨てると、0000 0010 = 2 です。

注意
補数を計算するときは、必ず同じビット数(桁数)をそろえてください。桁数が違うと、正しい結果になりません。

4. 操作

整数と桁数を入力し、「変換」を押してください。範囲外の数を入れると警告が出ます。

段階別の練習

自力演習(15分): 補数の作り方と、引き算を足し算に変える練習です。

易(基本の確認)

  1. 4ビットの 0101 は何の10進数か(補数表現ではなく2進数として)。
    答えと解き方0101(2) = 5。
  2. 4ビットで −1 を2進数で表しなさい。
    答えと解き方1 を 0001 にして反転 1110、1を足して 1111(2)。

標準(手順を組み合わせる)

  1. 8ビットで −10 を2進数で表しなさい。
    答えと解き方10 = 0000 1010、反転 1111 0101、1を足して 1111 0110(2)。
  2. 4ビットの 1001(2) は補数表現で何の10進数か。
    答えと解き方1001 を1引いて 1000、反転して 0111 = 7。よって −7。

共通テスト形式(読み取りと判断)

  1. 4ビットの補数で 3 − 6 を計算し、結果を10進数で答えなさい。
    答えと解き方3 = 0011、−6 = 1010(6 = 0110、反転 1001、+1 で 1010)。0011 + 1010 = 1101(2)。補数表現で 1101 は −3。確認: 3 − 6 = −3。
  2. 8ビットで表せる数の範囲はいくらからいくらまでか。
    答えと解き方−27 = −128 から 27 − 1 = 127 まで。範囲外の値は、正しく表せない(桁あふれ)。

振り返り

← 前のページ 次のページ →