問題
次の擬似言語プログラムを実行したとき、変数hexの値はどれか。(10進数を16進文字列に変換する最終ステップのみ) 整数型: n ← 255 文字列型: hex ← "" while (n > 0) 整数型: r ← n mod 16 if (r < 10) hex ← 文字(r + 48) + hex else hex ← 文字(r + 55) + hex endif n ← n / 16 endwhile
選択肢
- 1ア "FF"
- 2イ "FE"
- 3ウ "EF"
- 4エ "F0"
正解
1. ア "FF"
詳しい解説を見る解説を閉じる
解説
このプログラムは10進数nを16で割った余りを文字に変換し、文字列hexの前に継ぎ足していく16進変換である。n=255をトレースすると、1回目は255 mod 16=15で、15は10以上なので文字(15+55)=文字コード70の「F」をhexの前に連結し、n=255÷16=15(整数除算)。2回目は15 mod 16=15で再び「F」を前に連結し、n=15÷16=0でループ終了。よってhex="FF"となり、アが正解である。255=15×16+15=FF(16)からも確認できる。イ・ウ・エは余りの計算誤りや、新しい桁を後ろに連結すると誤読した場合の値である。頻出ポイント:基数変換は「割った余りが下位桁から順に求まるため逆順に並べる」のが原則で、本問は文字列の前への連結で逆順を実現している。
一問一答
科目A 180問+科目B 60問