(13)できるだけ少ない知識で解きたい人用「0000~4999のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。キー値が55550のときのアドレスはどれか」

#基本情報技術者試験 #成26年 #秋期 #問2 #ハッシュ #アルゴリズム

0000~4999のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。キー値が55550のときのアドレスはどれか。ここで,基数変換法とは,キー値を11進数とみなし,10進数に変換した後,下4桁に対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする。
ア 0260   イ 2525   ウ 2775   エ 4405

色々書いてあるけど、キー値55550を、基数変換法という方法を使ってアドレスっていうのに変換するらしい。
その基数変換法というのが、
 ・キー値は11進数とみなす
 ・10進数に変換する
 ・変換したやつの下4桁に0.5を掛ける(小数は切り捨て)
という方法なのだとか。
その通りにやる。

キー値55550は11進数。11進数っていうのは、今まで使ったことはないけど、10進数のひとケタが0~9、2進数は0~1、8進数は0~7、16進数は0~9とA~Fなので、きっと11進数は0~9とAになるのだ。

55550を10進数に変換するには・・・やったことないけど、2進数を10進数にするときの方法をまねしたいので、思い出してみる。それぞれのケタに重みがあった。
たとえば10110という2進数を10進数にするときは、
 1ケタ目の重みは1(2×0)
 2ケタ目の重みは2(2×1)
 3ケタ目の重みは4(2×2)
 4ケタ目の重みは8(4×2)
 5ケタ目の重みは16(8×2)
をまず思い出して、重みの合計をした。
10110は、0+2+4+0+16=22。

では、11進数の重みは、
 1ケタ目の重みは1(11×0)
 2ケタ目の重みは11(11×1)
 3ケタ目の重みは121(11×11)
 4ケタ目の重みは1331(121×11)
 5ケタ目の重みは14641(1331×11)
4ケタ目からめんどくさかったけど、がんばった。
キー値は55550なので、重みを掛けてみる。

重そう。
では合計する。
55+605+6655+73205=80520
ずっしりです。

下4桁取り出して、0.5掛けてみる。といっても0.5を掛けるって、半分にするってことだから・・・計算するまでもなく520より小さい値ですね。260しかないね。

この記事が気に入ったらサポートをしてみませんか?