プログラミングの基礎(擬似言語のトレース)
÷ は除算で、整数型の変数(引数を含む)に代入するときは小数点以下を切り捨てる。次の関数 toBin を toBin(12) として呼び出したときの戻り値はどれか。
○整数型: toBin(整数型: x)
整数型: y ← 0, p ← 1
while (x > 0)
y ← y + (x mod 2) × p
p ← p × 10
x ← x ÷ 2
endwhile
return y
- A11
- B100
- C1100
答えと解説を見る
正解:C. 1100
x mod 2 は2進数の一の位、x ← x ÷ 2 は2進数で1桁右へずらす操作です。x は 12、6、3、1、0 と変わり、下の桁から 0、0、1、1 が得られます。p は 1、10、100、1000 と10倍ずつ増えるので、y = 0 × 1 + 0 × 10 + 1 × 100 + 1 × 1000 = 1100 になります。12 を2進数で表した各桁を、10進数の各桁として並べた値です。
- A. y ← y × 10 + x mod 2 のように、得られた桁を順に上へ積んだ場合の値で、桁の並びが逆(0011)になります。
- B. while (x > 1) として、最上位の1を加える前に止めた場合の値です。
- C. 正しい。12 は2進数で 1100 です。