このページではコンピュータが扱うデータについて解説します。
Contents
コンピュータ内部で扱われるデータ
コンピュータを使うと本当にいろんなことができますよね。例えばネットも見れますし動画や画像を見ることもできます。またワードやエクセルなどで自分でドキュメントを作成することも可能です。さらにはゲームもできます。
これらを実現しているコンピュータですが、実はコンピュータ内部で扱われるデータは「1」と「0」だけなんです。もっと正確に言うと電気信号の強弱を「1」と「0」と解釈して処理が行われています。
例えばいろんなデータを記憶してくれるメモリは各セル(セルとは電荷を溜める回路みたいなものです)の電荷の溜まり具合によってデータを記憶しているだけです。電荷が溜まっているセルを「1」、溜まっていないセルを「0」として扱い、それがたくさん集まって多くのデータを記憶しています。
「1」と「0」から無限の情報を表現する仕組み
うーん、ほんとかなぁ…
コンピュータを使えば動画も見れるしゲームもできちゃうよ?
それを「1」と「0」のデータで実現してるとはとても思えない!
確かににわかには信じれないよね?
でも本当にこの「1」と「0」のデータからコンピュータはほぼ無限の情報を表現しているんだ
その理由を解説していくよ!
「1」と「0」からほぼ無限の情報を表現できる理由は下記の二つにあります。
- 複数の「1」と「0」をまとめて扱う
- データの捉え方を変える
この二つによってコンピュータはほぼ無限の情報を表現しているのです。一つ一つ解説していきます。
スポンサーリンク
複数の「1」と「0」をまとめて扱う
コンピュータが扱えるデータは「1」と「0」の2種類のみです。でもこのデータを複数まとめて扱うことで多くの情報を表現可能になります。
前述のとおりメモリの場合はセルの電荷の溜まり具合で情報を記憶しています。
一つのセルだけだと下の図のように、電荷が溜まっている場合と溜まっていない場合とで2種類の情報しか表現できません。
ここで2つのセルをまとめて一つのデータとして見てみましょう。
そうすると下の図のように4種類の情報を表現できるようになりました。
3つのセルをまとめると8種類の情報が表現できます。
つまり、データ1つだと2種類の情報しか表現できませんでしたが、まとめて扱うことで「2のセル数乗」分の情報を表現することが可能にできるようになります。
ここまで情報という曖昧な言葉を使っていましたが、今度は馴染みのある数で考えていきましょう。電荷が溜まっているセルを「1」、溜まっていないセルを「0」に置き換えて数字の羅列として表してみます。
例えばセルが3つの場合、各セルを「1」「0」に置き換えると下記のようになります。
●●●:000
●●○:001
●○●:010
●○○:011
○●●:100
○●○:101
○○●:110
○○○:111
※ ○:電荷が溜まっている
●:電荷が溜まっていない
8種類の「1」と「0」から構成される数ができましたね。このように「1」と「0」の二つの数字からのみで表現される数は2進数と呼ばれます。
さらにこの2進数を下記のルールで馴染みにある10進数に変換してみましょう。
①数の各桁に下のように重みをつける
一番右の数字からの桁数に応じて重みをつけます。一番右の数字から n 桁目の数字には2の n 乗の重みをつけます。
②数字が「1」の桁の重みを足し合わせる
続いて数字が「1」の桁のみ、①で付加した重みを足し合わせます。
そうすると、先程の2進数が馴染み深い10進数に変換されます。例えば2進数が「110」の場合は下のように「6」に変換されます。
同様にして変換することで、3つの「1」「0」の情報を下記のように8つの数字で表現することができます。
●●●:000 → 0
●●○:001 → 1
●○●:010 → 2
●○○:011 → 3
○●●:100 → 4
○●○:101 → 5
○○●:110 → 6
○○○:111 → 7
※ ○:電荷が溜まっている
●:電荷が溜まっていない
ここで注目していただきたいのは変換方法ではなく、1つのセルだと「1」と「0」の2種類しか表現できなかったけど3つのセルだと「0」から「7」の8種類の情報、もっと具体的に言うと8種類の数が表現できるようになった点です。
つまり複数の「1」と「0」をまとめることで多くの情報を表現できるようになったのです。
先程の例では3つをまとめただけですが、例えば8個をまとめて扱うと256種類の数を表現することが可能です(途中略しています)。
●●●●●●●●:00000000 → 0
●●●●●●●○:00000001 → 1
●●●●●●○●:00000010 → 2
●●●●●●○○:00000011 → 3
〜中略〜
○○○○○○●●:11111100 → 252
○○○○○○●○:11111101 → 253
○○○○○○○●:11111110 → 254
○○○○○○○○:11111111 → 255
※ ○:電荷が溜まっている
●:電荷が溜まっていない
さらに32個をまとめて扱うことで4294967296種類の数を表現することもできます。
このような感じで、データ1つでは「1」「0」の2種類の情報しか表現できませんが、複数まとめて扱うことで非常に多くの情報を表現できるようになります。
データの捉え方を変える
いきなりだけど2進数「10111001」は何を表現するデータだと思う?
2進数を10進数に変換すると…
「185」だ!
それも正解!だけど本当は「−71」を表してるつもりだったんだ
は?
実はデータは捉え方を変えることで色んな情報に置き換えることができるんだ
このデータの捉え方について解説していくよ
「1」と「0」からほぼ無限の情報を表現できる理由の2つ目は「データの捉え方を変える」です。
1つの例ですが、2進数には「2の補数表現」というものがあって、その場合、最も左の数字が、その2進数が「正の値」か「負の値」の値かを表現しています。具体的には、最も左の数字が「1」であればその2進数は「正の値」、「0」であれば「負の値」を表現していることになります。
なので、例えば2進数「10111001」は、符号なしの値として捉えれば10進数の「185」とも受け取れるし、符号ありの値として捉えれば10進数の「ー71」とも受け取ることができるんです。
つまり、同じデータであっても、データの捉え方を変えることで違う情報として表現することが可能です。
これは数の話だけではありません。例えば下記の2進数は10進数で考えると「75」です。
01001011
しかし、これを文字として捉えると「K」になるんです。アスキーコードというものがあって、各文字に対して値が割り振られており、捉え方によっては文字として情報を表現したり、数として表現することができます。
さらに下記の2進数を見てみましょう。
101011000100000101110111
これは符号なしの数として扱えば10進数で「11288951」となります。もしこれを色として捉えれば、下のような色として扱うことができます。
画像は画素という小さな点の集まりであり、その画素はRGBの3つの色の組み合わせで表現されることが多いです。さらに各RGBの色はそれぞれ8桁の2進数(10進数だと0−255の値)で表現されるので、上記の2進数だとそれぞれRGBは下記で表現されます。
R:10101100
G:01000001
B:01110111
つまり、元々は「1」と「0」の値であるにも関わらず、それらを複数でまとめて扱い、さらにその値の捉え方によって同じデータであっても数でも表現できるし、画像の一つの画素として扱うこともできるんです。
さらに、上記の2進数のデータをカラーではなくモノクロ画像の画素として扱うこともできます。その場合は3つの画素の値を表しているとデータを捉えることができます。
こんな感じで、データの捉え方を変えるだけで多くの情報を表すことが可能です。
「1」と「0」から色が表現できるなんてビックリ!
もしかして画像も表現できるの?
できるよ!前述の通り画像というのは画素の集まりだからね
1000万画素の RGB カラー画像の場合、1つの画素を表現するのに24(8x3)個の「1」と「0」が必要だから、2億4千万の「1」と「0」が集まって1つの画像が表現されることになるね!
すごい数字だね….!
動画はさらにその画像を何枚も並べて連続的に表示するデータなので、動画になるともっと多くの数の「1」と「0」が必要になるよ
ひぇー….
以上をまとめると、もともとコンピュータ内部では「1」と「0」の2つの情報しか扱えませんが、
- 複数の「1」と「0」をまとめて扱う
- データの捉え方を変える
によりほぼ無限の情報を表現することができます。
情報量(データ量)の単位
続いてよく使用される情報量(データ量)の単位について解説します。
スポンサーリンク
ビット
コンピュータ内部で扱われるデータの最小単位のことを「ビット」と呼びます。ここまで解説してきたように、コンピュータではデータをまとめたり捉え方を変えることでほぼ無限に情報を表現することが可能ですが、その基となるのは「1」or「0」のみを表現できるデータです。そのデータの単位が「ビット」です。英語で書くと「bit」になります。
この「ビット」は特にコンピュータやハードウェアを理解したり扱ったりする上で非常に重要なキーワードになりますので覚えておきましょう!
ビットという言葉がよく使われるのは下記のような分野です。
CPUのスペック
32bit CPU、64bit CPU みたいな使い方がされます。ザックリ言うと、CPU が一度に扱えるデータ量を表しています。昔あった Nintendo64 というゲーム機の “64” も 64bit CPU から取られた “64” と言われていますね。
通信速度
64 bps(bits per second)みたいな使い方をします。bps は b / s という書き方をされることもありますが、同じ意味です。1秒間に転送可能なデータ量を表しています。
画像の色の階調
画像の色の階調を表す時にも使われます。24bit 画像のようにビットが使われます。画像は小さな画素が集まることで構成されており、その1つ画素を表現するためのデータ量を表すのにビット数が使用されます。
このビット数が大きいほど、1つの画素に対して表現できる色の種類が多くなります。例えば 24bit 画像であれば「16777216色」の色を表現可能です。画素について詳しく知りたい方はコチラのページも見てください。
1ビットでは2つの情報のみを表現することができます。「1」と「0」のみですね。しかし、前述のとおり、複数のビットをまとめることで多くの情報を表現できます。
例えば2ビットでは4つ、3ビットでは8つ、というように2のビット数乗分の情報が表現できます。
バイト
このビットを8つまとめたデータを「バイト」と呼びます。英語で書くと「byte」です。つまり1バイトは8ビットです。さらに1バイトは256種類の情報を表現可能です。
このバイトもコンピュータを扱う上で重要ですし、特にソフトウェアを理解したり作成したり(プログラミング)する上で重要なキーワードになります。
バイトという言葉がよく使われるのは下記のような分野です。
メモリ容量
32 Giga Bytes みたいな使われ方がされます。略して書くと 32 GB となります。略した方が馴染み深いですね。 Giga(ギガ) については後述します。メモリに格納できるデータ量を表現しており、多いほど一度に多くのアプリを動作させることが可能です。
ハードディスク容量
ハードディスクに記憶しておけるデータ量を表現しており、これが多いほど多くのファイルをハードディスクに保存しておくことが可能です。
データ通信量
スマホなどで通信されたデータ量を表現するのに使われます。最近だと「7GB制限」などといった一月の通信量制限量を表すのでよく目にしますね!
bit も byte も両方イニシャルが “b” なので、略す場合は、ビットは小文字で “b”、バイトは大文字で “B” と区別して使用されます。
キロ・メガ・ギガ・テラ
これらも最近はよく聞くようになった言葉だと思います。特にバイトと一緒に使用される機会が多い言葉ですね。
一番馴染み深いのは「キロ(K)」だと思います。例えば体重の場合「50Kg」みたいに記載されますよね?これは「50000g」と同じ重さです。つまり「キロ(K)」は g の1000倍を表していることになります。もうちょっと一般的に書くと、元となる単位を1000倍する表記になります。
データの容量においても同様の考え方で使用されます。しかしデータ容量の場合は「キロ(K)」は1024倍を表します。つまり「KB」は元となる単位であるバイトを1024倍していることを表しています。
この1024は2の10乗という値で、コンピュータは2のN乗の値を扱うのが得意なので、このように中途半端な値にも思える1024という値が用いられています。ちょっと最初は戸惑うかもしれませんが、使っていると慣れてきます。
他のメガやギガ、テラにおいても元となる単位であるバイトを2のN乗する表記になります。具体的には下記のようになります。
単位 | 略 | 大きさ |
キロバイト | KB | 1024B(2の10乗バイト) |
メガバイト | MB | 1024KB(2の20乗バイト) |
ギガバイト | GB | 1024MB(2の30乗バイト) |
テラバイト | TB | 1024GB(2の40乗バイト) |
それぞれが 1024 倍されていっている様子が分かると思います。大きな数字もこれらの単位を用いることで、直感的にどれくらいの値が分かるので覚えておくと便利です。
スポンサーリンク
まとめ
このページではコンピュータが扱うデータについて解説しました。コンピュータ内部で扱われるデータは「1」と「0」のみですが、この「データをまとめて扱う」「データの捉え方を変える」ことでほぼ無限の情報を表現することが可能です。
またデータの単位としてはビットやバイトなど様々なものがありますので、これらも合わせて覚えておきましょう!