0000~4999のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。
キー値が55550のときのアドレスはどれか。
ここでの基数変換法は,キー値を11進数とみなし,10進数に変換した後,下4桁に対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする。
正答1
解説
正解は1です。
ハッシュ表のアドレスを基数変換法で求める問題です。
キー値を11進数とみなして10進数に直し、下4桁に0.5を掛けて小数点以下を切り捨てます。
【計算】
55550 を11進数とみなすと、各桁の重みは 11^4、11^3、11^2、11^1、11^0 です。
5 × 14641 = 73205 です。
5 × 1331 = 6655 です。
5 × 121 = 605 です。
5 × 11 = 55 です。
0 × 1 = 0 です。
合計は 73205 + 6655 + 605 + 55 + 0 = 80520 です。
下4桁は 0520 です。
520 × 0.5 = 260 なので、アドレスは 0260 です。
【選択肢別解説】
1:○ 上の計算どおり、アドレスは0260になります。
0000~4999の範囲にも収まっています。
2:× 2525にはなりません。
10進数に変換した値 80520 の下4桁は0520であり、これに0.5を掛けると260です。
3:× 2775にはなりません。
キー値55550の下4桁5550に0.5を掛けた値であり、11進数からの変換を省いています。
4:× 4405にはなりません。
正しく11進数から変換すると下4桁は0520なので、アドレスは0260です。
【ポイント】
「11進数とみなす」とは、数字の並びをそのまま使い、桁の重みだけを11のべき乗に変えるという意味です。
下4桁に0.5を掛けるのは、0~9999を表の大きさ0000~4999に収めるためです。