過去問解きまくり研究所 ホーム

平成23年度 秋期 午前 問1

離散数学

16進数に関する問題

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

〔手順〕
 (1)  [ a ]を x に代入する。
 (2)  x をスタックにプッシュする。
 (3)  n を[ b ]論理シフトする。
ab
アn AND 000F₁₆左に4ビット
イn AND 000F₁₆右に4ビット
ウn AND FFF0₁₆左に4ビット
エn AND FFF0₁₆右に4ビット
答えと解説を見る

✓ これが正解イa=n AND 000F₁₆ / b=右に4ビット

解説

下位4ビットを取り出し、右に4ビットずらします。

16進数の1桁は、ちょうど2進数の4桁ぶんの情報を持ちます。ですから16ビットの値を16進の4桁に分けるには、下から4ビットずつ切り出していけばよいことになります。切り出しに使うのは、必要なところだけを1にした値との論理積です。取り出したい部分に当たるビットが1、それ以外が0になっていれば、その部分だけが残り、ほかは0になります。取り出したあとは、次に取り出したい桁を同じ位置まで運んでこなければなりません。そこで値を4ビットぶん送る論理シフトが必要です。判定の軸は二つです。一つは、掛け合わせる値の1が立っている位置が、取り出したい下位側にそろっているかどうか。もう一つは、送る向きが、まだ取り出していない上位の桁を下位側へ引き寄せる向きになっているかどうかです。向きを取り違えると、取り出し済みの側へ値が流れ、上位の桁は器からあふれて失われます。

ほかの選択肢はなぜ違うのか

出典:平成23年度 秋期 基本情報技術者試験 午前 問1(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)