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.感想
今回は以前より内容と課題が難しくなかったのであまり苦戦せずにやれたので良かった。計算問題を暗算でやってみたら、途中をかなり間違えて書いてしまったので、次回からは一発で答えが出るようにしたいと思いました。