1. 0x143f→5183 〔1〕16**3 16**2 16**1 16**0 〔2〕4096 256 16 1 〔3〕1 4 3 f(15) 〔4〕4096 1024 48 15 4096+1024+48+15=5183 2. 0b10011011→155 〔1〕2**7 2**6 2**5 2**4 2**3 2**2 2**1 2**0 〔2〕128 64 32 16 8 4 2 1 〔3〕1 0 0 1 1 0 1 1 〔4〕128 0 0 16 8 0 2 1 128+0+0+16+8+0+2+1=155 3. 0x146+0x67→429 0x146は 〔1〕16**2 16**1 16**0 〔2〕256 16 1 〔3〕1 4 6 〔4〕256 64 6 256+64+6=326 0x67は 〔1〕16**1 16**0 〔2〕16 1 〔3〕6 7 〔4〕96 7 96+7=103 合計 326+103=429 4. 0x146+0x67→110101101 2) 429 1 ____ 2) 214 0 ____ 2) 107 1 ____ 2) 53 1 ____ 2) 26 0 ____ 2) 13 1 ____ 2) 6 0 ____ 2) 3 1 ____ 2) 1 1 ____ 0 5.問5のプログラム #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- name = [] i = 0 print"あなたの名前を16進数に変換します。\n" print"あなたの名前をローマ字で入力してください。\n" name = gets.chomp! while i < name.length printf("%s %x \n",name[i],name[i].ord) i += 1 end 6.問5のプログラムの説明 1行目:rubyインタプリンタのあるディレクトリを指定している。 2行目:日本語文字コードがEUC-JPであることを示している。 4行目:今回は文字列を構成する各文字の文字コードを調べるので配列の時と同様 に[]を利用する。name(変数)が配列であることを宣言する。 5行目:iに0を代入するように指定。(初期値は0。) 7行目:""の内のメッセージを表示するように指定。\nで改行も行う。 8行目:7行目と同様。 9行目:gets.chomp!メソッドを使用することでキーボードからの入力を文字列と して取得する。改行文字(\n)があれば取り除く。 11行目:whileを使用し、繰り返しを始める。配列のデータ数だけ繰り返す。 name.lengthメソッドとすることでname(配列変数)の中に代入されている 値を表示するようにする。 12行目:printfメソッドを使用し後ろに指定した""内のメッセージを表示するが、 その際に%s(対応する値を文字列に置き換えるためのメソッド)、%x(16 進数の文字コード表示するためのメソッド)のそれぞれの位置に""の後ろ で指定した変数(name)に代入された値を入れ込んで表示する。文字列の 文字コードを知りたいので文字列[i]として文字列を配列扱いとして、イ ンデックスを変更することで0文字目、1文字目、2文字目といった具合に 順番に取り出していく。 13行目:繰り返しが行われるたびにiの値が1ずつ増えるように指定。 14行目:whileに対応するend.繰り返しが終了する。 7.問5の実行結果 broy{c115xxx}% ./report7.rb [~/program] あなたの名前を16進数に変換します。 あなたの名前をローマ字で入力してください。 inouemichitaka i 69 n 6e o 6f u 75 e 65 m 6d i 69 c 63 h 68 i 69 t 74 a 61 k 6b a 61 8.感想 今回もプログラム作成が辛かった。計算の方はなんとか理解できた。 9.参考文献 基礎プログラミング第6回 基礎プログラミング第9回 Ruby プログラミング 基礎講座 P34、P50 石垣智隆さんによる指導 10.作成したプログラムの添付