デジタルデータの世界 超入門その1

今回はデジタルデータについての超入門です。

初心者向けの内容なのか?と思う人もいるかもしれません。でも知っておくと携帯電話会社や電器屋との会話などでの理解がより深まると思います。

1.「デジタル」の雰囲気

みなさんの中にはデジタルと聞いたとたんに、「もういいです。」と感じる人がいるかもしれません。

でも、実はそんなに複雑なことではありません。(知ってるからでしょ?というツッコミは置いておいて)

厳密なものの言い方ではありませんが、「数えられるもの」がデジタル的なものだと思ってもらうのがいいような気がします。こう言われると随分と簡単な気がしないでしょうか?

例えば、「1,2,3,…」という整数、1本2本と数えられる鉛筆、1個2個と数えられるブロックのようなものがデジタル的ということです。

ちなみに世の中には「デジタル」の対になる言葉として「アナログ」があります。

先程書いたデジタル的なものとの対比で表現すれば「数えられないもの」がアナログ的なものだと思うことにしましょう。

例えば、円周率のパイ(π=3.141…)、鉛筆の重さ(5.33289689… g)、指を伸ばしたときの間隔(15.2868952…. cm)がアナログ的ということです。これはどれだけ沢山の数字を並べてたとしても正確に表現できません。

2.スマホやパソコン内の数字

いきなり「スマホやパソコン内のデジタル」いうタイトルにすると概念が広くなりすぎるので、まずはスマホやパソコンの中で「数字をどう表現しているか」だけに絞って話を進めさせてください。

パソコンの「コン」はコンピューターのコンです。つまり何はともあれパソコンは「計算機」ということです。計算機なので、まずはどのように数字を表現しているかということから説明しようと思います。

なお、パソコンはデジタル機器の仲間なので、その内部で扱う数字も勿論デジタル的に表現されています。

昔は人手等の他のエネルギー源を使うのも有りでしたが、今やコンピューターは電気がないと何の役にも立たない物体です。

そして電気は「電圧が何ボルト?」とか「電流が何アンペア?」というとアナログ的な世界に入ってしまいます。これをデジタル的な世界として取り扱うには「電圧がかかってる?」とか「電流が流れてる?」という表現を使います。

実は電圧がかかっていれば電流は流れますし、電圧がかかっていなければ電流は流れません。電圧と電流を別に考えてもあまり意味がないので、ここでは電圧だけ考えることにしましょう。

本題に戻ると、コンピューターの中では「電圧がかかっている」「電圧がかかっていない」という2つの状態だけがあるということです。便宜的に電圧がかかっていない状態を「0」ゼロとし、電圧がかかっている状態を「1」イチとします。

但し、これだけでは「0+0=0」「0+1=1」「1+0=1」しか正しく計算できまぜん。自分で計算したほうがよっぽどマシです。どうすればいいでしょうか?

わたしたち自身の計算方法を再確認してみましょう。わたしたちの数字は0から9の10種の数字しかありませんが、9より大きな数字も表現できています。その表現方法は「桁数を増やす」です。つまり、0から9までは一桁しか使いませんが、9の次は二桁使って10を表現します。更に99の次になると三桁使って100を表現するということです。

これと同じことをコンピューターの中でやっています。コンピューターの数字は0と1の2種の数字を使います。1以上の数字を表現するには2桁使って10(「じゅう」とは読みません。「いちぜろ」です)とします。その次の数字は11(いちいち)ですが、この次の数字は三桁使って100(いちぜろぜろ)となります。

簡潔に表現すれば、わたしたちは10進数を使いますが、コンピューターは2進数を使います。下に10進数の数字と2進数の数字の対応を示します。

10進数    2進数
  0       0
  1       1
  2      10
  3      11
  4     100
  5     101
  6     110
  7     111
  8    1000
  9    1001
 10    1010

これを見ると分かるように2進数は10進数に比べると、同じ数値を表すときに必要な桁数が随分多くなります。

コンピューター自身が見るなら桁数が多くなっても問題ありませんが、人がコンピューターの動きを確認するために2進数の数値を見るのは大変です。ですので、人が見るときには、桁数を減らしつつ、分かり易いように16進数を使うことが多いです。もちろん普通のユーザーが16進数の数値を見ることはまずありません。一部の専門家やプログラマーたちは見ることがあります。

突然16進数が出てきましたが、これには理由があります。16進数を使うと、2進数の4桁分を、ちょうど1桁でぴったり表現することができるのです。

16進数では、0から9の後ろにAからFの6つのアルファベットを使います。では、先程の一覧に16進数も加えましょう。蛇足ですが、16進数のアルファベットは大文字でも小文字でも構いません。但し混在することはないと思います。

10進数    2進数  16進数
  0       0    0
  1       1    1
  2      10    2
  3      11    3
  4     100    4
  5     101    5
  6     110    6
  7     111    7
  8    1000    8
  9    1001    9
 10    1010    A
 11    1011    B
 12    1100    C
 13    1101    D
 14    1110    E
 15    1111    F
 16   10000   10

このように10進数の16は、2進数では10000、16進数では10と表現することができます。

なお、2進数の1桁分のことを「ビット」といいます。上の例で言えば、10進数の15は、2進数では1111と4桁です。このことは「(10進数の)15は4ビットで表現できる」ともいえます。

現在の多くのパソコンやスマホで扱っている2進数の桁数は32桁、又は64桁です。これも「ビット」を使うと、「現在のコンピューターの多くは32ビット、又は64ビットです」と(大体)言い換えられます。

3.ギガとか、メガとか

携帯電話会社にスマホの契約をしにいくと、「月々のデータ使用量(又は通信量)が何ギガ」とか「スマホのメモリが何ギガ」という言葉を耳にします。

せっかくデジタルの数値の話をしているので、ここで説明するのがいいかもしれません。

先程の言葉をもう少し正確に表現すると、次のようになります。

  • 月々のデータ通信量が何ギガバイト
  • スマホのメモリが何ギガバイト

ポイントは「ギガバイト」という部分です。これがどんな単位なのか簡単に話をします。

基本になるのは「バイト」という単位です。「B」(大文字のB)だけで表すこともあります。実は前節の最後に話をした「ビット」と関連しています。

現在の定義は 1バイト=8ビット (2進数8桁) です。

なぜ2進数8桁で「バイト」という単位を作ったのか?と思うかもしれません。

これは、2進数で8桁あると256通りの1と0の組み合わせが作れるので、これだけの数があればアルファベットの大文字小文字(52文字)、数字(10文字)、そして主な記号に割り当てることができること。更に16進数でちょうど2桁分であることも関係しているのではないかと思います。

とりあえず定義ですので、1バイト=8ビット ということでお願いします。

次に説明するのは「ギガ」です。これは実はシリーズものになっていて、「キロ、メガ、ギガ、テラ、…」というように続きます。

感覚的には数字の「万、億、兆、…」と似ています。「万、億、兆、…」の場合は1万倍ずつ変わっていきますが、「キロ、メガ、ギガ、テラ、…」の場合は1000倍ずつ変わります。

具体的には次の通りです。

キロ (k):1,000
メガ (M):1,000,000
ギガ (G):1,000,000,000
テラ (T):1,000,000,000,000

但し、デジタル的な量を表すときには少し変わることがあります。

どういうことかというと、先程からコンピューターは2進数を使っているという話をしていますよね?実はコンピューターの中に入っている半導体上の部品の数も2進数的な数と相性がいいんです。

そして、2の10乗という、何となくキリのいい数字が偶然にも(?) 1024 という1000に近い数値になっています。

なので、コンピューター関連のものでは次のように定義している場合もあります。

キロ (k):1,024
メガ (M):1,024 ✕ 1024
ギガ (G):1,024 ✕ 1024 ✕ 1024
テラ (T):1,024 ✕ 1024 ✕ 1024 ✕ 1024

なので、1kB (キロバイト) なら 1024B (バイト) かもしれないし、1000B (バイト)かもしれません。説明をよく見て、どの定義を使用しているか確認した方がいいかもしれません。

キロやメガならこの差は誤差だと思えるかもしれませんが、テラになるとその差は10%程度ですから…。ちなみに現状テラの単位をよく聞くのはハードディスクドライブ(HDD)ですね。だんだん容量が大きくなっていて、今や20TB近くのHDDも売られているようです。

話を元に戻しましょう。1ギガバイト (GB) というのは、上記のように10億バイト (又は10億+α バイト)のことです。

1GBは、メールなどの文字データをやり取りするだけなら気が遠くなるほど沢山のデータ量です。でも、写真のような画像ファイルなら200-300個やりとりをすると到達するくらいのデータ量です。更に高画質の動画ならすぐに消費してしまう程度だと思います。

但し、スマホの契約で出てくる月々のデータ消費量というのは携帯電話会社のネットワークを利用してインターネットとデータをやり取りしている場合だけカウントされるものです。Wi-Fiを使って自宅や外出先でインターネットとデータをやり取りしている場合にはカウントされないので、みなさんがインターネットを使う場所や接続方法をよく考えて月々のデータ容量を選択するようにしてください。

今回は、デジタルデータの世界の超入門ということで、数値だけの説明になってしまいました。今後も他のデジタルデータを紹介できればと考えています。

それでは今回の話はこれでおしまいです。