1.問1の計算過程と解答 問1:0x143fを10進数に変換せよ 16^0*15+16^1*3+16^2*4+16^3*1 =1*15+16*3+256*4+4096*1 =15+48+1024+4096 =63+5120 =5183 答え:5183 2.問2の計算過程と解答 問2:0b10011011を10進数に変換せよ 2^0*1+2^1*1+2^2*0+2^3*1+2^4*1+2^5*0+2^6*0+2^7*1 =1+2+0+8+16+0+0+128 =155 答え:155 3.問3の計算過程と解答 問3:0x146 + 0x67の計算を行った結果を10進数で示せ 10進数に変換した後に計算を行う (16^0*6+16^1*4+16^2*1)+(16^0*7+16^1*6) =(6+64+256)+(7+96) =326+103 =429 答え:429 4.問4の計算過程と解答 問4:0x146 + 0x67の計算を行った結果を2進数で示せ 10進数に変換した後に計算を行ったあとで2進数に変換する 問3の答えより10進数での答えは「429」であるため、これを2進数に変換する 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 ---- 2) 0 答え:110101101 5.問5のプログラム #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- name = [] x = 0 char = 0 print"適当な半角英数字を入力してください(複数可)" name = gets.chomp! while char < name.length printf(" 0x%2x\n", name[x].ord) x += 1 char += 1 end 6.問5のプログラムの説明 4行目:nameは配列である。 9行目:nameに入力された文字列を代入する。 11行目:chsrの値がnameの配列の個数と同等かされ以上になったら11行目から16行目までのプログラムを停止する。(charの初期値が0なので、=を入れてしまうと1回余計に繰り返すため同等かそれ以上になったら止まるようにした。) 13行目:nameに代入された文字列のx番目の文字を0x+文字コードとして全体が2桁の16進数の数字に変換する。(0xは後ろの数字が16進数であることを表している。) 7.問5の実行結果 ED-SA101-031{c122144}% ./report7.rb [~/program] 適当な半角英数字を入力してください(複数可)seima 0x73 0x65 0x69 0x6d 0x61 ED-SA101-031{c122144}% ./report7.rb [~/program] 適当な半角英数字を入力してください(複数可)SEIMA 0x53 0x45 0x49 0x4d 0x41 8.感想 今回は以前より内容と課題が難しくなかったのであまり苦戦せずにやれたので良かった。計算問題を暗算でやってみたら、途中をかなり間違えて書いてしまったので、次回からは一発で答えが出るようにしたいと思いました。