平成20年 春期 基本情報技術者 午前 問1

16ビットの2進数nを16進数の各けたに分けて、下位のけたから順にスタックに格納するために、次の手順を4回繰り返す。
a、bに入る適切な語句の組合せはどれか。
ここで、XXXX16は16進数XXXXを表す。

[手順]
(1)   a  をxに代入する。
(2) xをスタックにプッシュする。
(3) nを  b  論理シフトする。

a b
n AND 000F16 左に4ビット
n AND 000F16 右に4ビット
n AND FFF016 左に4ビット
n AND FFF016 右に4ビット


答え イ


解説
16進数の1けたは2進数の4けたである。
すなわち、2進数の数値の下位4けたを取り出すと16進数になる。2進数の下位4けたを取り出すためには、求める値に11112=F16をAND演算すればよい。
これで、下位4けたの16進数にすることができたので、次は下位5〜8けたを取り出すが、このとき求める数を右に4ビットシフトすれば、F16とAND演算すればよくなり計算が楽である。
したがって、aには“n AND 000F16”、bには“右に4ビットシフト”が入る。(イ)

16ビットの2進数を“0001 0010 0101 1001”として、16進数を求めると、まず、これと“000F16=0000 0000 0000 11112”をAND演算する。
 この結果は、“10012=916”になる。
次に、右に4ビットシフトすると“0001 0010 0101 1001”は“0000 0001 0010 0101”になり、これと“000F16”をAND演算する。
 この結果は、“01012=516”になる。
次に、右に4ビットシフトすると“0000 0001 0010 0101”は“0000 0000 0001 0010”になり、これと“000F16”をAND演算する。
 この結果は、“00102=216”になる。
次に、右に4ビットシフトすると“0000 0000 0001 0010”は“0000 0000 0000 0001”になり、これと“000F16”をAND演算する。
 この結果は、“00012=116”になる。
したがって、求める16進数は125916


キーワード
・2進数、16進数
・シフト演算
・スタック

キーワードの解説

戻る 一覧へ 次へ