|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1つの回路に電流を流すか流さないかによって、「オンかオフか」(1か0か)という2つの情報を送る(処理する)ことができます。 これがデジタルデータの基本単位で、「ビット」といいます。1ビット回路の処理量は、1か0かの2つだけです。 回路を2つにすれば、(0,0)、(0,1)、(1,0)、(1,1)、すなわち (1) 回路Aが0で回路Bが0 (2) 回路Aが1で回路Bが0 (3) 回路Aが0で回路Bが1 (4) 回路Aが1で回路Bが1 の4つの組み合わせができますから、処理量は4になります。回路が2つなので2ビットになります。 さらに回路を3つにしてみましょう。 回路A 0 0 0 0 1 1 1 1 回路B 0 1 0 1 0 1 0 1 回路C 0 0 1 1 0 0 1 1 の8つの組み合わせができますから、処理量は8になります。回路が3つなので3ビットになります。 つまり、nビットの処理量Nは、N=2n、2のべき乗となるのです。 逆にいうと、Nのデータ数が扱える回路のビット数nは、n=log2N、2を底とした対数値になります。 ちなみに、現在のパソコンは32ビットCPUなので、一度に扱えるデータ量は232=4,294,967,296(約43億)となります。さらにゲーム機で使われている64ビットCPUは、264(約1,846京 )のデータ処理能力があります。さらに余談になりますが、昔の「ファミリーコンピュータ」や、人類初の月面着陸を果たしたアポロ宇宙船のCPUは8ビットで、データ処理量は28=256でした。 このように、ビット数が多くなると処理量(組み合わせ数)は、膨大になるので、2nでなく、nを「情報量」として定義しています。すなわち、nビットの扱える情報量はnであるということです。正確にいうと、nビットの扱える情報量は、nビットの処理量N(=2n)の2を底とした対数値です。 もしnビットの回路が2つあった場合、処理量は2n×2n=22nとなります。情報量はlog222nですから2nになります。同様に回路が3つあった場合、処理量は2n×2n×2n=23n、情報量はlog223n=3nとなります。つまり、処理量の掛け算は情報量の足し算になります。これは高校数学で、べきと対数の単元で習いますね。 以下、過去問題を見ながら解説を進めます。 ==============過去問題(平成13年度)============== 文字による情報を電子メール等の文字符号で送る場合と、FAX等の文字画像で送る場合の情報量について比較する。ここで、情報量とは、どれだけのものを区別できるかを示す量であり、その単位の1ビットの情報とは、0と1又は白と黒など、2つのうちどちらかであるかを示せることを意味している。2ピットの情報は、1ビットの情報を2つ組み合わせることにより、4つのものを区別することができる。FAXでは32×32=1024の白黒の点配列で漢字を含む日本語の1文字を表すものとすると、この点配列の持つ情報量は1024ビットとなり、この点配列で表せる異なる画像の数は2**1024(注:**はべき乗を表す)となる。この情報を文字画像情報と呼ぼう。 実際に伝えたい文字の数は65536以下であるものとしよう。これらの文字のどれかということを示す情報は、16ビットあれば十分である。これを文字符号情報と呼ぼう。 1文字伝えるのに、点配列で表された文字画像情報の情報量は、文字符号情報の情報量の何倍になるか。 (1) 1倍 (2) 16倍 (3) 32倍 (4) 64倍 (5) 1024倍 問題文の中でビット定義なども説明しているため長々としたものになっていますが、要は 1024ビットの情報量は、16ビットの情報量の何倍か と聞いているのです。 前述のように、nビットの扱える情報量はnですから、1024ビットの情報量は1024、16ビットの情報量は16で、1024÷16=64、正解は(4)となります。 ================================================== ==============過去問題(平成14年度)============== ジョーカーを除くトランプカード52枚のうちから1枚を抜き取った。 ・このカードがハートであることを知った時の情報量は log24=2bit である。 ・このカードがキングであることを知った時の情報量は log213=3.7bit である。 このカードがハートのキングであることを知った時の情報量は次のどれか。 (1) 1.2 (2) 1.85 (3) 3.1 (4) 5.7 (5) 7.4 今度は情報量の足し算です。 AND条件(AかつB)は、通常は掛け算になります。ハートである確率は1/4、キングである確率は1/13ですから、「ハートかつキング」である確率は1/4×1/13=1/52になります。 ここでは確率の分母を処理量として、2を底とした対数値である情報量(ビット)にしていますから、「ハートかつキング」の情報量は、処理量の掛け算結果の2を底とした対数値になります。 つまりlog2(4*13)=log252=5.7、正解は(4)になります。 ・・・・と、こういったややこしいことをしなくても、処理量の掛け算は情報量の足し算と理解していれば、あっさりと2+3.7=5.7と解けます。間違えて掛け算してしまうと、選択肢(5)になるというワナも用意されています。ビットは掛け算しないと覚えておきましょう。 =========================================== ==============過去問題(平成16年度)============== レジスタに正の整数値aを入れ、左に5ビットシフトしてから、aを引く。この結果、レジスタの数値はaの何倍の値となるか、次の中から選べ。 ただし、レジスタ内で数値は2進数として扱われ、上記の操作中であふれは生じないものとする。 (1) 4 (2) 5 (3) 15 (4) 31 (5) 33 「レジスタ」を知らないと途方にくれてしまうかもしれませんが、データ格納場所、下駄箱のようなものだとでも思ってください。ただし横には並びますが、縦には1段だけです。箱の位置は「桁」を表します。つまり、1番右の箱は第1桁(1の位)、右から2番目は第2桁(10の位)です。たとえば「1」という数値を1番右の箱に入れたら1、右から2番目の箱なら10、3番目なら100になります。 ただし、入れる数値はビットの基本単位、デジタルデータですから2進数です。 問題は、aを入れるのですが、入れたあとで左に5ビットシフトします。用語が理解できないと何のことかわかりませんが、つまり、5つ左の箱に入れなおしています。ということは、5桁大きくなっています。これが10進数ならa→a×105ということになりますが、2進数ですから、5桁大きくなったということは、a→a×25です。25は32ですから、a→32aになったということです。 問題文では5ビットシフトの後でaを引いていますから、32a−a=31aとなり、もとのaの32倍、正解は(4)となります。 =========================================== 最後に練習問題をやってみましょう。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻る |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
繰り返し計算のあるアルゴリズムは、プログラム構造わかりにくいという人が多いと思います。こういう人は、多少なりともなじみのある形(たとえばフロー図)に整理すると理解しやすくなります。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻る |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
構文図は、文法を図化したもので、厳密な、あいまいさのない文法が必要な世界、つまりプログラミングの世界でよく使われます。 図−1では、数字のあとに「だ」という文字が無条件にくっついていないと通過できません。ですから、たとえば「123」という文字列は通過できません。 図−2のようにすると、文字なしでも通過できるようになりますから、「123」でもOKになります。しかし「123よ」は通過できません(文字がないわけでもなく、「だ」でもないため)。 そこで、図−3のようにして「あ」〜「ん」と濁音・半濁音を「50音」として定義します。その上で、図−4のようにすれば、「123だ」「123よ」「123だよ」「123かもしれない」などが通過できるようになります。
構文図の説明が見られるサイトはいくつかありますので、そちらをよく読んで理解してください。
次の文字列のうち、図2の構文図では定義されていないものを選べ。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻る |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2進数とは
2進数では、10進数の2、4、8、16で桁が上がっていますね。これらはそれぞれ21、22、23、24に相当しますね。10進数でも桁が上がるのは10、100、1000、10000で、それぞれが101、102、103、104に相当しますから、この点は同じです。つまり、N進数ではN1、N2、N3、N4・・・・で桁が上がるのです。 2進数〜10進数変換
このように、商がゼロになるまで2(N進数のN)で割って、あまりを(4)→(1)の順に(計算して出てきたとは逆順に)並べます。こうすると「1101」が得られます。これが10進数の13を2進数に変換した答えです。 2進数は何に使うか
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻る |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
論理演算とは、真か偽かの2通りの結果だけを使った、集合における演算で、プログラミング言語などではビット演算とも言います。
たとえば、命題Aが身長170cm以上、命題Bが体重60kg以上としてみます。これに対して、様々な身長・体重の場合に、論理演算の結果がどうなるかみてみます。なお、下表の中で○は真、×は偽です。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
戻る |