令和3年度 秋期 午前 問23
ハードウェア
汎用入出力ポートに書き込む値
マイコンの汎用入出力ポートに接続された LED1 を,LED2 の状態を変化させずに点灯したい。汎用入出力ポートに書き込む値として,適切なものはどれか。ここで,使用されている汎用入出力ポートのビットは全て出力モードに設定されていて,出力値の読出しが可能で,この操作の間に汎用入出力ポートに対する他の操作は行われないものとする。
〔図〕
汎用入出力ポート(上から (MSB) ビット7・ビット6・…・ビット3・…・(LSB) ビット0) ビット3 ── 電流制限抵抗 ── LED 1 ── 接地 ビット6 ── 電流制限抵抗 ── LED 2 ── 接地
- ア汎用入出力ポートから読み出した値と 16 進数の 08 との論理積
- イ汎用入出力ポートから読み出した値と 16 進数の 08 との論理和
- ウ汎用入出力ポートから読み出した値と 16 進数の 48 との論理積
- エ汎用入出力ポートから読み出した値と 16 進数の 48 との論理和
答えと解説を見る
✓ これが正解イ汎用入出力ポートから読み出した値と 16 進数の 08 との論理和
解説
他のビットを残したまま1にするなら論理和です。
設問は、二つの発光部が別々のビットにつながっている汎用入出力ポートに対し、片方だけを点灯させ、もう片方の状態は変えないための書込み値を、四通りの中から選ばせています。ですから見分けの軸は、点灯させたいビットだけが1になっている値を用意し、読み出した現在の値とそれとの論理和を取っているか、という一点だけです。あるビットを1にしたいときに論理和を使うと、残りのビットは元の値のまま持ち越されます。これに対して論理積を使うと、相手の値が0になっている位置はすべて0へ落ちてしまいます。図が示すつなぎ先から、点灯させたい側のビットだけが立つ値は16進数の08だと読み取れます。
ほかの選択肢はなぜ違うのか
- ア汎用入出力ポートから読み出した値と 16…:狙ったビットだけが立つ値を使ってはいますが、重ね方が論理積になっています。相手が0の位置はすべて0へ落ちるので、状態を変えてはいけないもう一方の発光部まで消えてしまいます。
- ウ汎用入出力ポートから読み出した値と 16…:二つのビットが立つ値と論理積を取る形です。もう一方の状態は保てますが、点灯させたい側は元が0であれば0のままなので、肝心の点灯そのものが起こりません。
- エ汎用入出力ポートから読み出した値と 16…:二つのビットが立つ値と論理和を取る形です。狙った側は点灯しますが、同時にもう一方のビットも1になってしまい、状態を変化させないという条件を破ってしまいます。
出典:令和3年度 秋期 応用情報技術者試験 午前 問23
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)