10.2 情報量の概念
WEBページ上に大きな画像を表示させようとすると,ブラウザがページを表示する際に時間がかかってしまいます.ページを開く際に時間がかかりすぎるとということは,ページの操作性が低いということを意味しています.授業でも度々,大きな画像は使わないよう注意をしてきました.では,何故大きな画像をWEBページ上で表示しようとすると,ページの読み込みに時間がかかるのでしょうか.また,一般に「この画像は重い」などと言った時の「重さ」とは,一体何を表しているのでしょうか.
コンピュータ内で扱われる情報(文字や画像,音声等)は,「情報量」と言われる量を持ちます.ここでは情報量の概念と情報量の単位(ビット,バイト)について説明します.
情報量
コンピュータ内で表される数字や文字,画像などの情報は,必ず量を持っています.「このファイルは3メガバイトもある」と言った時,「3メガバイト」という表現は,「バイト」という単位によって情報の量,すなわち情報量を表しています.では一体,情報量とはどのような概念なのでしょうか.
カードやコインには表と裏があるので,例えば表が黒,裏が白のカード1枚を使って,「晴れ」と「雨」の2つの天候を表すことができます.また,カードが2枚あれば「晴れ」,「雨」,「曇」,「雪」といったように4つの天候を,3枚あれば8つの天候を表すことができます(図1).
このカードを図2のように並べると,図形を表すこともできます.
さて,1枚のカードは2つの天候しか表すことができないのに対して,2枚のカードは4つの天候を表すことができます.これは1枚のカードよりも2枚のカードの方が表すことのできる情報の量が大きいということを意味しています.3枚のカードは8つの天候を区別し,表すことができるので,2枚のカードよりも更に情報量は大きいということができます.このように,情報量とは「何種類の情報を区別し,表すことができるか」ということを意味する概念で,当然,1枚のカードより3枚のカードの方が区別することのできる情報の数が多く,情報量は大きいと言えます.
情報量の単位として用いられるのが「ビット(語源は2進法の1桁を意味するBinary Digit)」といわれるもので,1枚のカードや1枚のコインのように,2つのものを区別できるものは,「情報量1ビットをもつ」といいます.表が黒,裏が白の3枚のカードを並べると8つのものを区別することができますが(図1),この時3枚のカードによる表現は,情報量としては3ビットを持つといえます.同様に,図2のように16枚のカードを並べた画像表現は,16ビットの情報量をもつといえます(すなわち,2の16乗通りの異なるものを区別できるということです).ためしに,表が黒,裏が白のカード64枚がもつ情報量をビットで表してみてください.
さて,コンピュータの内部では,全ての情報はコインやカードの表裏のかわりに1か0(電気信号のONかOFFに対応します)の2進数によって表現されます.先ほどのカードの表裏を2進数の1,0に置き換え,8つの天候を0から7までの10進数(私たちが日常使っている数字記法です)に置き換えると,次のように対応づけることが出来ます(下表).
2進数 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|---|
10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
2進法
ここで,2進法と呼ばれる数字記法について説明をします.
普段我々が日常生活で使用している数の表し方は10進位取り記法(以下10進法)と呼ばれる体系です.10進法を用いると,1桁で10個の別々のものを区別することができます.例えば,0は赤,1は青,2は緑・・・といった具合です.11個以上のものを区別するためには,桁を増やすことによって対応します.
さて,人間と違いコンピュータは2進法という表記体系を用いています.10進法に慣れ親しんだ我々からすると非常に変わった体系に思われますが,コンピュータにとっては非常に都合のよい体系なのです.10進法においては0から9までの10種類の記号がありますが,2進法には0と1の2種類しか記号が存在しません.つまり,2進法では1桁で2種類のものしか区別することができないのです.例えば,0が男,1が女,若しくは0が偽,1が真といった具合です.3つ以上のものを区別しようとすると,桁を増やす必要があります(2進法は2の累乗で桁上がりを起こします).
例えば8個のものを区別しようとする際に,10進法では1桁しか必要ないのに対し,2進数では3桁必要となります.また,256個のものを区別するのに,10進法では3桁あれば十分なのに対して,2進法では8桁も必要となります.随分2進法は効率が悪いと思われるかもしれませんが,電気回路であるコンピュータにとってはこちらの方が都合が良いのです.電気信号は一般にONかOFFの2通りの状態しか持たないので,ONを1、OFFを0とすると,ONとOFFの組み合わせで様々な情報を表すことができるのです.
さて,8個の数を区別することのできる2進数表現(すなわち,3桁の2進数)は何ビットの情報量をもつといえるでしょうか.2つのものを区別できるもの(例えば,1枚のコイン,1枚のカード)は情報量として1ビットをもつのでした.2進数において「1枚のコイン」の「枚」にあたるのは,桁数であるといえます.1桁の2進数ならば,1か0という2つの状態の区別ができるので(カードで言えば表裏の区別ができるということです),1ビットの情報量をもちます.同様に,2桁の2進数ならば,「11,10,01,00」という4つの情報を区別できるので,コインやカードで言えば2枚,すなわち2ビットの情報量をもつといえます.8個の数を区別することのできる2進数表現は3桁なので,情報量として3ビットを持つと言えます.
一般に,(2進法は2の累乗で桁が増えるので)2進法ではN個のものを区別するためにLog2・N桁,すなわちLog2・Nビット必要であるといえます(a,Bを自然数とした時,Log a・Bとは、aを何乗したらBになるかを表しています.例えば,Log2・8=3です).下の表は,0からNまでの自然数を区別しようとする時,何ビットの情報が必要であるかを表したものです(Nは2進数及び10進数で表記しています).
2進数 | 0 | 1 | 10 | 11 | 100 | 101 | 110 | 111 |
---|---|---|---|---|---|---|---|---|
10進数 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
必要なビット | 1 | 1 | 2 | 2 | 3 | 3 | 3 | 3 |
情報量の単位
情報量の単位としては,上で説明したビット以外にもバイトという単位がよく使われます.256個の情報を区別するためにはLog2・256=8ビット必要ですが,一般に8ビットを1バイトと呼ぶことになっています.さらに,1,000バイト(2進数では1024バイト)を1キロバイト,1,048,576バイト(約1,000キロバイト)を1メガバイトと呼びます.「このファイルは3メガバイトもある」という表現は,「このファイルは3メガバイト=3,000キロバイト=3,000,000バイト=24,000,000ビットの情報量を持つ」ということを意味しています.そして,24,000,000ビットの情報量をもつとは,2の24,000,000乗個のものを区別できるということを意味しています.
画像の「重さ」
このように,コンピュータによって扱うことのできる情報は全て情報量を持ちます.WEBページに大きな画像を貼り付けると表示が遅くなってしまうのは,画像の情報量が大きいためコンピュータが画像を読み込むのに時間がかかってしまうためです.同様のことは,画像等の情報量が大きいファイルをメールで送信する時や,ファイルをダウンロードする時にも起こります.
それでは,次の練習問題を解いてみましょう.
● 練習問題
(1)3メガバイトのファイルをダウンロードするとします.ダウンロードのスピードは,「平均して1秒間に5キロバイト」であるとします.この時,ダウンロードにかかる時間はおよそどれくらいでしょうか?計算してみましょう.
(2)5桁の2進数はいくつのものを区別することができるでしょうか.
(3)表が白,裏が黒のカード64枚を平面上に配置することによって表される画像は,何ビットの情報量を持つでしょうか.
圧縮について
画像や音声,動画などの情報量は,文字に比べて非常に大きくなってしまいます.そのため,フルカラーのCG画像をメールで送信したりすることは,実用的ではありません.そこで,情報量を減らすための仕組みとして「圧縮」という技術が考え出されました(逆に,圧縮された情報を元に戻すことを「伸長」と言います).ここでは圧縮方法の種類について,画像を例に簡単に紹介します.
- 非圧縮:画像データそのままです.
- 可逆圧縮:圧縮した形式で保存や転送を行い,表示の時に元通りに伸長します.PNG(Portable Network Graphics)がその代表例です.
- 非可逆圧縮:元の画像のあまり重要でない情報を省略して圧縮します.伸長しても完全に元通りにはなりませんが,可逆圧縮より圧縮率を高くすることができます.JPEG(Joint Photographic Experts Group)形式がその代表例です.