コンピュータサイエンス入門 第三章 超個人的解答
まだWiki用意してねえ(´・ω・`)
次は用意しておきたいと思います。がどのWikiを使おうか悩む。
一応レンタルサーバーは借りているので、そこにWikiを置いておこうかと思っていますが、何がいいのかさっぱりさっぱり(・∀・)
→全部そろってから、一つのコンテンツとしてWikiに書こうと考えました。
公開方針通り、公開するのは月曜の夜です。それ以前にまだ何もやっていませんが。
あとどうでもいい人には動でも良い話レポートはワープロを使ってやってもいいらしいですね。先生が行ってました。先生ありがとう。これで半日は自由な時間が増えました!
どうでも良すぎるので消しました。でも先生ありがとう。
2008/05/17 22:43
第三章の話
ASCII文字セットとは異なる、アルファベットの独自の文字セットを定義してくださいとか、面白いけど悩む問題wwww
どう定義すればいいんだよwww その前にASCII文字セットってどういう定義であの並びになってるんだ?
→文字セットについて調べてみた。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