1.0x143fを10進数へ
0x143f→4桁
・16**3 16**2 16**1 16**0
・4096  256   16    1
・1     4     3     f(15)
・4096+1024 + 48  + 15 = 5183

答え 5183

2.0b10011011を10進数へ
0b10011011→8桁
・2**7 2**6 2**5 2**4 2**3 2**2 2**1 2**0
・128  64   32   16   8    4    2    1
・1    0    0    1    1    0    1    1
・128+ 0 +  0  + 16 + 8 +  0  + 2 +  1 = 155

答え 155

3.0x146 + 0x67を10進数へ
0x146→3桁
・16**2 16**1 16**0
・256   16    1
・1     4     6
・256 + 64 + 6 = 326

0x67→2桁
・16**1 16**0
・16    1
・6     7
・96 +  7 = 103

326 + 103 = 429

答え 429

4.0x146 + 0x67を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.プログラム
#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

i = 0
name = []

print"ローマ字で書いた氏名を16進数に変換します\n"
print"ローマ字で入力してください\n"

name = gets.chomp!

while i < name.length
  printf("%c %x\n",name[i],name[i].ord)
  i += 1
end

6.プログラムの説明
 今回はユーザーが入力した名前の各文字の文字コードを調べると考える。
そのため、配列を使い[]を利用することで簡単に任意の文字コードを取り
出すことができる。
 lengthメソッドは配列の中に代入している値の数を返してくれるメソッド
である。入力してもらった名前(i)がすべて文字コードに変換された時点で
while end の繰り返しは終了する。
 %cとは文字コードに対応する文字を出力する。そして、16進数に変化させる
ため%xとも入力する。これに対応するものとして、name[i]とname[i].ordが
ある。.ordとは、文字列の文字コードを返すメソッドである。
 i += 1は、iに16進数の値が代入されているため、1ずつ増加されていく。

7.プログラムの実行結果
ローマ字で書いた氏名を16進数に変換します
ローマ字で入力してください
aso izumi
a 61
s 73
o 6f
  20
i 69
z 7a
u 75
m 6d
i 69

8.感想
 計算自体は簡単にすることができた。ただ、進数同士の足し算の
やり方がわからなくて苦労した。やり方を検索しても難しくて理解
できなかった。そのため、10進数に直してから計算したが、他にもっと
簡単なやり方がないのか気になった。
 問5はとても難しくて、友だちに聞きながら行った。最終的には、プログラム
を教えてもらった後に理解することができた。そのため、似たようなプログラム
になってしまった。他にもやり方があるなら知りたいと思った。

9.参考文献
友人のプログラム