0000〜4999のアドレスをもつハッシュ表があり,レコードのキー値からアドレスに変換するアルゴリズムとして基数変換法を用いる。
キー値が55550のときのアドレスはどれか。
ここで,基数変換法とは,キー値を11進数とみなし,10進数に変換した後,下4けたに対して0.5を乗じた結果(小数点以下は切捨て)をレコードのアドレスとする。
正答1
解説
正解は1です。
ハッシュ表のアドレスをキー値から計算する方法のうち、基数変換法の手順をそのとおりに計算する問題です。
キー値 55550 を11進数として読み、10進数に直してから下4けたに0.5を掛けます。
【計算】
各けたの重みは、上のけたから 11^4、11^3、11^2、11^1、11^0 です。
11^4=14641、11^3=1331、11^2=121、11^1=11 です。
10進数の値は 5×14641+5×1331+5×121+5×11+0×1 です。
これは 73205+6655+605+55+0=80520 です。
下4けたは 0520 です。
0520×0.5=260 なので、アドレスは 0260 です。
【選択肢別解説】
1:○ 上の計算どおり、80520 の下4けた 0520 に0.5を掛けた 260 なので正しいです。
2:× 2525 は、正しい手順で求めた 0260 とは一致しません。
11進数として読み替えた値の下4けたは 0520 です。
3:× 2775 は、11進数への読替えをせずに 55550 の下4けた 5550 に0.5を掛けた値です。
手順の最初の変換が抜けています。
4:× 4405 は、正しい手順で計算した値 0260 とは一致しません。
【ポイント】
「n進数とみなす」とは、各けたの数字に n のべき乗の重みを掛けて合計することです。
ハッシュ関数の問題は、問題文の手順を一つずつ忠実に実行すれば必ず解けます。