この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は イ

解説

シフトレジスタの動作を波形から読み取る問題です。シリアル入力パラレル出力のシフトレジスタは、クロックの立上りエッジのたびに、保持している内容を上位方向へ1ビットずらすと同時に、データ信号の現在の値(正論理: High=1、Low=0)を最下位ビットに取り込みます。8回のクロックで8ビットがそろい、最初に取り込まれたビットは7回シフトされて最上位ビットに、最後に取り込まれたビットが最下位ビットになります。つまり「時系列で早く取り込んだビットほど上位に並ぶ」ことになります。図の波形で各クロックの立上り時点のデータ値を順に読み取ると 1、0、0、0、1、1、0、1 です。これを最初のビットを最上位として並べると 10001101 となり、16進数に直すと上位4ビット 1000=8、下位4ビット 1101=D で 8D です。最後にストローブの立上りエッジで値が確定されるため、確定後のシフトレジスタの値は 8D、イが正解です。

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

選択肢 ア
63(2進数 01100011)は、データを取り込むタイミングをクロックの立上りエッジから1クロック分ずらして読み取り、さらにビットの並び順(シフト方向)も逆に解釈した場合に得られる値です。エ(C6)のビット列をちょうど逆順に読んだ値に一致しており、タイミングと方向の二重の読み違いが重なった結果です。取り込みは必ず「立上りエッジの瞬間のデータ値」で読み取ります。
選択肢 ウ
B1(2進数 10110001)は、正解 8D(10001101)のビット列をちょうど逆順に並べた値です。これは「最初に取り込んだビットが最下位に残る」と、シフト方向を逆に解釈した場合に生じます。本問のレジスタは内容を上位方向へシフトしながら最下位に新ビットを取り込むため、最初のビットは7回押し上げられて最上位に到達します。シフト方向の記述を正確に読むことが決め手です。
選択肢 エ
C6(2進数 11000110)は、データを読み取るクロックエッジの位置を誤り、1クロックずれたタイミング(例えば立下りエッジや次の立上り)で波形を読んだ場合に得られる値です。波形問題では「どのエッジで取り込むか」が最重要の条件であり、本問は「クロックの立上りエッジ」と明示されています。各立上りの瞬間に縦線を引いてデータの High/Low を読み取る習慣をつけましょう。

解くときのポイント

シフトレジスタの波形問題は①取り込みエッジ(立上り/立下り)を確認、②各エッジの瞬間のデータ値を時系列に書き出す、③シフト方向から「最初のビットがどちらの端に行くか」を決める、の3手順で機械的に解く。