【ITパスポート試験】No.086|数と表現

※本サイトで紹介している商品・サービス等の外部リンクには、プロモーションが含まれています。

本記事では、コンピュータがどのように数値を表現し、計算しているのかを解説します。2進数の表現方法、10進数との基数変換、2進数での加算・減算、そしてビット数と表現できる数値の範囲の関係を、順番に整理していきます。仕組みをイメージできるようになると、計算問題にも落ち着いて取り組めるようになります。


目次

1. コンピュータと2進数の関係

この章では、コンピュータがなぜ2進数を使うのかを確認しながら、日常で使う10進数との違いと、「ビット」「重み」という基本的な考え方を整理します。

2進数の表現(10進数との違い)

私たちが日常で使っているのは、0〜9の10個の数字を使う10進数です。一方、コンピュータは電気のオン(1)とオフ(0)しか扱えないため、「0」と「1」の2つだけを使う2進数を採用しています。

10進数と2進数の主な違いは、次の3点です。

  • 使える数字の種類
    • 10進数:0〜9の10種類
    • 2進数:0と1の2種類
  • 桁が増えるタイミング(繰り上がり)
    • 10進数:9の次は10になり、「10のかたまり」で1桁繰り上がる
    • 2進数:1の次は10₂になり、「2のかたまり」で1桁繰り上がる
  • 桁の「位」の増え方
    • 10進数:右から「1の位」「10の位」「100の位」…と10倍ずつ増える
    • 2進数:右から「1の位」「2の位」「4の位」「8の位」…と2倍ずつ増える

10進数が「10を単位にして数を増やしていく表し方」だとすると、2進数は「2を単位にして数を増やしていく表し方」と考えるとイメージしやすくなります。

ビットと桁の重み

ここで、2進数を構成する最小単位と、桁の意味を整理しておきます。

  • ビット(bit)とは
    • 「0」か「1」の数字を1つだけ書いたもの
    • コンピュータの世界で使う、情報のいちばん小さな単位

たとえば、0101 という2進数があったとき、0 1 0 1 の4つの数字が並んでいますが、この1つひとつの「0」や「1」が、それぞれ1ビットです。

次に、「桁の重み」です。2進数では、左に1桁進むごとに、その桁が表す量が2倍になっていきます。

  • 一番右の桁:2⁰=1 の重み
  • その左の桁:2¹=2 の重み
  • さらに左の桁:2²=4 の重み
  • その左の桁:2³=8 の重み

ちなみに、10進数では、左に1桁進むごとに、その桁が表す量が10倍になっていきます。

  • 一番右の桁:10⁰=1 の重み(1の位)
  • その左の桁:10¹=10 の重み(10の位)
  • さらに左の桁:10²=100 の重み(100の位)
  • その左の桁:10³=1,000 の重み(1,000の位)

ここでは、2進数の場合、「左へ行くほど、1・2・4・8…と2倍ずつ重くなる」というイメージだけ押さえておけば十分です。この仕組みを具体的な計算に使う方法は、次の章で基数変換と合わせて確認していきます。


2. 基数変換で10進数と2進数を行き来する

この章では、10進数と2進数の間の変換(基数変換)の方法を解説します。10進数から2進数へ変換する2つの方法と、2進数から10進数へ変換する方法を順番に見ていきます。

10進数から2進数への変換(重みを使う方法)

まずは、1章で触れた「桁の重み(2のべき乗)」を利用する方法です。数の中に「どの2のかたまりが含まれているか」を探していくやり方で、仕組みの理解もしやすい方法です。

手順は次の通りです。

  1. 変換したい10進数以下で、「最大の2のべき乗(2ⁿ)」を探す
  2. その値を引き算し、「使った」桁を1、「使わなかった」桁を0とする
  3. 残りの値について、次に小さい2のべき乗で同じことを繰り返す
  4. 必要な桁(2ⁿ〜2⁰)を並べて、1と0を書き込む

例として、10進数の 13 を2進数に変換してみます。

  • 13以下で最大の2のべき乗は 8(2³) → 13−8=5 なので、2³の桁は1
  • 残り5以下で最大の2のべき乗は 4(2²) → 5−4=1 なので、2²の桁も1
  • 残り1以下で使えるのは 1(2⁰) → 1−1=0 なので、2⁰の桁も1
  • 途中で使わなかった 2¹ の桁は0

2³〜2⁰ の桁を左から並べると、1101 となります。
この方法は、各桁の重みを意識しながら変換できるので、2進数の仕組みに慣れるうえで役立ちます。

10進数から2進数への変換(2で割る方法)

次に、試験問題でよく使われる「2で割り続ける」方法です。少し機械的ですが、手順さえ覚えれば確実に変換できます。

  1. 変換したい10進数を2で割り、余りを求める
  2. 商をさらに2で割り、同じように商と余りを求める
  3. 商が0になるまで繰り返す
  4. 出てきた余りを下から上へ読んだものが、2進数の値になる

同じく 13 を例にすると、

  • 13 ÷ 2 = 商 6 余り 1
  • 6 ÷ 2 = 商 3 余り 0
  • 3 ÷ 2 = 商 1 余り 1
  • 1 ÷ 2 = 商 0 余り 1

余りを下から上へ読むと 1101 となり、やはり 1101 であることが分かります。
重みを使う方法と結果がそろっていることを確認しておくと安心です。

2進数から10進数への変換

2進数から10進数への変換は、桁の重みをそのまま利用して計算します。

  1. 右端の桁から順に、2⁰・2¹・2²…と重みを割り当てる
  2. 各桁の数字(0か1)に、その重みを掛ける
  3. すべて足し合わせる

例として 10100 を10進数に変換してみます。

  • 左から順に重みは 16(2⁴)、8(2³)、4(2²)、2(2¹)、1(2⁰)
  • 各桁の数字は 1, 0, 1, 0, 0

これを掛け合わせて足すと、

1×16+0×8+1×4+0×2+0×1=16+4=20

となり、10進数では 20 です。

このように、「重みを掛けて足す」というシンプルな手順で変換できます。


3. 2進数で行う加算と減算

この章では、2進数での加算と減算の考え方を解説します。基本ルールさえ押さえれば、10進数の筆算とほぼ同じ要領で計算できます。

2進数の加算の基本ルール

2進数の加算では、「0」と「1」だけを使うため、足し算のパターンは次の4つしかありません。

  • 0 + 0 = 0
  • 0 + 1 = 1
  • 1 + 0 = 1
  • 1 + 1 = 10(2進数で2。0を書き、1を繰り上げ)

例えば、101(5)+011(3)の計算をしてみます。

  101
+ 011
------
 1000

右から順に計算すると、

  • 1 + 1 = 10 → 0を書き、1繰り上げ
  • 繰り上がり1 + 0 + 1 = 10 → 0を書き、また1繰り上げ
  • 繰り上がり1 + 1 + 0 = 10 → 0を書き、1繰り上げ

最終的に 1000 となり、10進数では 8 になります。10進数の筆算と同じく、「繰り上がり」がポイントです。

2進数の減算の基本ルール

2進数の減算も、基本は10進数の筆算と同じで、「繰り下がり」が発生します。代表的なパターンは次のとおりです。

  • 0 − 0 = 0
  • 1 − 0 = 1
  • 1 − 1 = 0
  • 0 − 1 のように引けない場合は、左の桁から1を借りてくる

例えば、1000(8)−0011(3)を計算してみます。

  1000
- 0011
------
  0101

右から2桁分はどちらも、上が0で下が1なので、そのままでは「0 − 1」ができません。このときは10進数と同じように、左の桁から1を借りてきます。しかし、すぐ左の桁も0、そのさらに左の桁も0なので、一番左の桁(8の位)の1から順番に繰り下がりが伝わっていくイメージになります。

繰り下がりが伝わった結果として、計算をするときの各桁は次のように考えられます。

  • 1の位(右端の桁):10(2) − 1 を計算して 1
  • 2の位:1 − 1 を計算して 0
  • 4の位:1 − 0 を計算して 1
  • 8の位(左端の桁):0 − 0 なので 0

したがって、答えは 0101 となり、これは10進数では 5 に相当します。

このように、2進数でも「引けないときは左の桁から1を借りてくる」という考え方は10進数と同じです。ただし、0と1しかないため、今回の例のように繰り下がりが連続して起こると、筆算だけで追うのは少し分かりづらく感じることがあります。そのような場合は、いったん2進数を10進数に直して引き算し、その結果をもう一度2進数に変換するという方法で考えても構いません。

実際のコンピュータ内部では 2 の補数という仕組みを使って減算していますが、ITパスポート試験レベルでは、「10進数の筆算と同じように、2進数でも繰り下がりをしながら減算できる」というイメージが持てていれば十分です。

4. ビット数と表現できる数値の範囲

この章では、ビット数と表現できる数値の範囲の関係を説明します。コンピュータが扱える数には限りがある、という感覚を持つことが大切です。

符号なし整数の範囲

nビットですべてのビットを「0」と「1」で組み合わせるとします。符号なし整数(マイナスを考えない整数)として使う場合、表現できるパターン数や最小値、最大値は以下のようになります。

  • パターン数:2ⁿ 通り
  • 最小値:0
  • 最大値:2ⁿ − 1

例えば、8ビットの場合を考えると、

  • パターン数:2⁸ = 256 通り
  • 最小値:0
  • 最大値:255

となり、0〜255 の整数を表現できます。

同様に、16ビットなら、

  • パターン数:216 = 4,294,967,296通り
  • 最小値:0
  • 最大値:4,294,967,295

となり、ビット数が増えるほど、表現できる範囲が一気に広がることが分かります。

符号付き整数の範囲

符号付き整数では、プラスだけでなくマイナスの値も表現できるように、ビットの一部を「符号」を示すために使います。この役割を担うのが符号ビットです。例えば 8ビットの場合、左端の1ビットを符号ビット、それ以外の7ビットを数の大きさを表す部分として使うイメージになります。符号ビットが 0 のときは「0または正の数」、1 のときは「負の数」として扱うことで、同じビット数でもプラスとマイナスの両方を表現できるようになります。

ただし、ビットの総数は変わりません。8ビットであれば、0と1の並び方は 2⁸=256通りのままです。この256通りを、そのまま 0〜255 のようにすべてプラス側に使うのが符号なし整数でした。一方、符号付き整数では、この256通りを「0と正の数のためのパターン」と「負の数のためのパターン」におよそ半分ずつ割り当てて使います。直感的には、256個の“枠”を、プラス側用とマイナス側用に均等に分けているイメージです。

8ビットの符号付き整数を例にすると、まず符号ビットが 0 の場合を考えます。符号ビット以外の残り7ビットで表現できるパターン数は 2⁷=128通りなので、「0と正の数」を合わせて128個分の値を割り当てることができます。具体的な範囲としては 0〜+127 までです。一方、符号ビットが 1 の場合は、その 128通りをすべて負の数として使います。個数が128個あるので、範囲としては -1 から始まり、-128 までの 128個の値が割り当てられることになります。その結果、8ビットの符号付き整数全体としては、-128〜+127 という範囲を表現できる、という整理になります。

一般化すると、以下の通りです。

  • パターン数:2ⁿ 通り
  • 最小値: -2ⁿ⁻¹
  • 最大値:+2ⁿ⁻¹−1

例えば 16ビットなら、

  • パターン数:216 = 4,294,967,296通り
  • 最小値:-32,768
  • 最大値:+32,767

というように、ビット数が増えるほどプラスとマイナスの両側に広い範囲を取れるようになります。ただし、符号ビットを1ビット確保するぶん、同じビット数でも符号なし整数に比べると「表現できる正の最大値」は少し小さくなる点がポイントです。ITパスポート試験では、「符号なしは 0〜2ⁿ−1、符号付きは -2ⁿ⁻¹〜2ⁿ⁻¹−1」という関係と、「符号付きにすると、プラスとマイナスを両方表現できる代わりに一方向の範囲が狭くなる」というイメージが持てていれば十分です。


まとめ

コンピュータは、電気のオン・オフを扱う都合から、「0」と「1」だけを使う2進数で数値を表現しています。2進数では、各桁が 1・2・4・8…というように2倍ずつ増える「重み」を持っており、この重みと0・1の組合せで数を表しています。10進数との違いを意識しておくことで、「なぜ0と1だけでいろいろな数が表せるのか」をイメージしやすくなります。

10進数と2進数の間を行き来する基数変換では、まず重み(2のべき乗)を使って変換する方法を押さえ、そのうえで2で割り続ける機械的な方法も理解しておくと安心です。逆に2進数から10進数へは、各桁に重みを掛けて足し合わせるだけでした。また、2進数での加算・減算は、0と1の限られた組合せを使った筆算で行い、繰り上がりや繰り下がりの考え方は10進数と共通しています。

さらに、使えるビット数によって表現できる数値の範囲が決まり、符号なし整数では 0〜2ⁿ−1、符号付き整数ではマイナスも含んだ範囲になることも重要なポイントでした。これらの考え方を押さえておくことで、2進数の計算問題や「表現可能な数値の範囲」を問う問題に取り組みやすくなり、コンピュータがどのように数を扱っているのかという全体像もつかみやすくなります。

  • URLをコピーしました!

この記事を書いた人

IPA(独立行政法人 情報処理推進機構)の活動を陰ながら応援している、しがないソフトウェアエンジニア。
サトシ ナカモトの戦友。
ITやソフトウェアに関することをわかりやすくまとめ、多くの人にそれらを知ってもらおうと活動しています。
ご質問やご要望、お仕事依頼がございましたらお問合せフォームよりお願いいたします。

コメント

コメントする

CAPTCHA



reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次