16ビットの2進数n を16進数の各桁に分けて、下位の桁から順にスタックに格納するために、次の手順を4回繰り返す。
a、bに入る適切な語句の組合せはどれか。
ここで、XXXX16は16進数XXXXを表す。
[手順]
|
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進数
・シフト演算
・スタック