コンピュータサイエンス入門 第三章 超個人的解答

まだWiki用意してねえ(´・ω・`)
次は用意しておきたいと思います。がどのWikiを使おうか悩む。
一応レンタルサーバーは借りているので、そこにWikiを置いておこうかと思っていますが、何がいいのかさっぱりさっぱり(・∀・)
→全部そろってから、一つのコンテンツとしてWikiに書こうと考えました。

公開方針通り、公開するのは月曜の夜です。それ以前にまだ何もやっていませんが。
あとどうでもいい人には動でも良い話レポートはワープロを使ってやってもいいらしいですね。先生が行ってました。先生ありがとう。これで半日は自由な時間が増えました!
どうでも良すぎるので消しました。でも先生ありがとう。

2008/05/17 22:43

第三章の話

ASCII文字セットとは異なる、アルファベットの独自の文字セットを定義してくださいとか、面白いけど悩む問題wwww
どう定義すればいいんだよwww その前にASCII文字セットってどういう定義であの並びになってるんだ?
→文字セットについて調べてみた。Wikipediaだけど、理解するのに時間がかかりそうだ・・・

文字集合 - Wikipedia

→ 適当に決め手作った。まねされると泣くので何も書きませんが、最初に作ろうとしたのは、縦26行、横8列の表からです。一列がアルファベット26文字表現できるので、わかりやすいかと思ったら、26進数で考えないといけないので、覚えるのが難しそうでした。で別のものを考えて、結局ASCII文字セットの表に近い感じになり、おまけにものすごい無駄な空間が出来ましたw

ASCII文字セットはとてもきれいですばらしい表でした。

 つーかASCII文字セットがどれだけすばらしいものかよくわかった。空間に無駄がなくてよくまとまってるし、16進数と8進数の組み合わせでわかりやすい。というかこれを気がつかせるための問題だったと思う。
あとキーボードと表をよく見ると面白いことがわかります。キーボードとこんな関係があったんだと。

注意

 公開する解答は、超がつくほど個人的に解いた解答です。解答の正確性は定かではありません。何かしらの参考にする場合は、調べなおすなどの注意を図ってください。

解答一覧

3.1

1.次の2進数は10進数でそれぞれいくつになるか答えてください

a.1 b.11 c.110 d.1101

 aは1、bは3、cは6、dは13 である。
 それぞれの計算は、2^0*n0 + 2^1*n1 + ... + 2^i*ni という式を利用している。0b11は 2^0*1 + 2^1*1 = 3となる。

2.次の16進数は10進数でそれぞれいくつになるか答えてください。

a.1 b.12 c.16 d.1B e.12c

 aは1、bは18、cは22、dは27、eは300 である。
 それぞれの計算は、16^0*n0 + 16^1*n1 + ... + 16^i*niという式を利用している。0x12は 16^0*2 + 16^1*1 = 18 となる

3.次の10進数を2進数であらわすとそれぞれどのようになるか答えてください。

a.1 b.3 c. 11 d.28

 aは0b01、bは0b11、cは0b1011、dは0b11100 である。
それぞれの計算は、10進数の数値を2で割り、商が0になるまで割り続ける。割ったときの余りを割った順番で記録していき、商が0になった時点で余りが2進表現となる。

4.次の10進数を16進数であらわすとそれぞれどのようになるか答えてください。

a.12 b.18 c.26 d.58

 aは0xC、bは0x12、cは0x16、dは0x3A である。
 それぞれの計算は、0〜9までは0〜9と変わらず、10〜15はA〜Fに置き換える。
 16以上の場合は、10進数の数値を16で割り、商が0になるまで割り続ける。割ったときの余りを割った順番で記録していき、商が0になった時点で余りが16進表現となる。

3.2

1.次の符号付16進数は、10進数でそれぞれいくつになるか答えてください。

a.01 b.3E c.80 d.A1 e.FF

 aは1、bは62、cは-128、dは-94、eは-1 である。
 計算方法は、0x1 = 1 〜 0x7F = 127 , 0x80 = -128 〜 0xFF = -1 として、16進数を2進数に直し、128(0b10000000)以上の場合は全体の0と1を反転させて、1加える。そして得られた数値に-を加える。

2.文字コードEBCDICとして、次の10進数をBCDで表現してください。

a.234 b.-567 c.-321

 aは 1111 0010 1111 0011 1100 0100、
 bは 1111 0101 1111 0110 1101 0111、
 cは 1111 0011 1111 0010 1101 0001、 である。
 アンパック形式を利用する。この方式では、ゾーンビットが4ビット、桁ごとは4ビットで表現。
一番低い位には符号ビット(4ビット)をゾーンビットの代わりに付け加える。1100が+、1101が-である。以下のように表現する。

(ゾーンビット)(桁の値) ... (ゾーンビット)(桁の値) (符号ビット)(桁の値)

234の場合は 1111(ゾーンビット) 0010(桁の値) 1111(ゾーンビット) 0011(桁の値) 1100(符号ビット) 0100(桁の値)

となる。

3.3

1.次の小数点以下の数を含む2進数は10進数ではいくつになるでしょうか?

a.1.01 b.10.101 c.101.1101

 aは1.25、bは2.625、cは5.8125 である。
 それぞれの計算は、小数点より上の位は2進数を10進数に直す方法(3.1の1を参照)で直す。
小数点以下の場合は、0.1が1/2、0.01が1/4のように、位の数値が1位が一つ下がることに1(/n^i) (i = 1〜N)
1.01の場合は 1 + 0 + 1/4 = 1.25 、10.101は 2 + 0 + 1/2 + 0 + 1/8 = 2.625 のようになる。

2.次の指数表現の実数を普通の10進数表現で表してください。

a.1.23e01 b.1.23e-1 c.2.56e02

 aは12.3、bは0.123、cは256 である。
それぞれは、たとえばe01 = 10^1、e02 = 10^2 = 100、e-01 = 10~-1 = 0.1となるので、実数に適用させればよい。

3.4

1.ニブルとバイトのビット数を答えてください。

 1ニブルは4ビット、1バイトは8ビットである。

2.ワードが2バイトのシステムで、ダブルワードは何ビットになるか答えてください。

 ワードが2バイトのシステムの場合、ダブルワードはワードの2個分となるので、4バイト、32ビットとなる。

3.6

1.ASCII文字セットとは異なる、アルファベットの独自の文字セットを定義してください。

 縦0-12行、横0-15列の表を作って、8列1行目から9列13行目までがa〜z、10列1行目から11行13列までがA〜Zが格納可能。ちなみに 12列1行目から15列13行目までは、ASCII文字セットにある記号、数字も格納できる。以下がアルファベットだけの文字セットの表である。
 この表の特徴は、aの二進数表現が1000,0001のように、1バイト固定であること。だが1000,0001以下の104の空間の無駄遣いがあり、実用的ではないと思われる。
 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 15
0 a n A N
1 b o B O
2 c p C P
3 d q D Q
4 e r E R
5 f s F S
6 g t G T
7 h u H U
8 i v I V
9 j w J W
10 k x K X
11 l y L Y
12 m z M Z
2.1ピクセルは3バイト使う、サイズが1,024×768ピクセルのイメージファイルのサイズを計算してください。

 サイズが1,024×768では、786432ピクセル。これに1ピクセル=3バイトを適応させると
(1,024×768)×3 = 2,359,296
 よって,、2,359,296バイトとなる。