戦国IT - 情報処理技術者試験の過去問対策サイト
お知らせお問い合わせ料金プラン

応用情報技術者 2021年 秋期 午前223


問題文

マイコンの汎用入出力ポートに接続された LED1 を、LED2の状態を変化させずに点灯したい。汎用入出力ポートに書き込む値として、適切なものはどれか。ここで、使用されている汎用入出力ポートのビットは全て出力モードに設定されていて、出力値の読出しが可能で、この操作の間に汎用入出力ポートに対する他の操作は行われないものとする。
応用情報技術者 2021年 秋期 午前2 問23の問題画像

選択肢

汎用入出力ポートから読み出した値と16進数の 08 との論理積
汎用入出力ポートから読み出した値と16進数の 08 との論理和(正解)
汎用入出力ポートから読み出した値と16進数の48との論理積
汎用入出力ポートから読み出した値と16進数の48との論理和

マイコンの汎用入出力ポートに接続されたLEDの制御【午前2 解説】

要点まとめ

  • 結論:LED1を点灯させつつLED2の状態を変えないには、既存のポート値にLED1のビットだけを論理和で設定する必要があります。
  • 根拠:論理和(OR)操作は指定ビットを1にし、他のビットはそのまま保持するため、LED2の状態を変えません。
  • 差がつくポイント:論理積(AND)を使うと他のビットが0になる可能性があり、LED2の状態が変わるため誤りです。

正解の理由

LED1はビット3に接続されているため、LED1を点灯させるにはビット3を1にします。LED2の状態を変えたくないので、他のビットはそのまま保持しなければなりません。
論理和(OR)演算は、対象ビットを1にセットしつつ他のビットは変更しないため、汎用入出力ポートの読み出し値と16進数の08(ビット3が1)との論理和が適切です。
したがって、選択肢イが正解です。

よくある誤解

論理積(AND)を使うと、指定ビット以外が0になる可能性があり、LED2の状態が変わってしまいます。
また、16進数の値の意味を誤解し、どのビットが対応しているかを間違えることも多いです。

解法ステップ

  1. LED1とLED2が接続されているビットを確認する(LED1はビット3、LED2はビット6)。
  2. LED1を点灯させるにはビット3を1にする必要があると理解する。
  3. LED2の状態を変えないためには、ビット6の値を保持する必要がある。
  4. 現在のポート値を読み出し、ビット3だけを1にセットし、他のビットはそのままにする方法を考える。
  5. 論理和(OR)演算を使い、読み出した値と16進数08(00001000)をORする。
  6. これによりLED1が点灯し、LED2の状態は変わらない。

選択肢別の誤答解説

  • ア:論理積(AND)で08と演算すると、ビット3以外が0になるためLED2の状態が変わる。誤り。
  • :論理和(OR)で08と演算し、ビット3だけを1にセット。LED2の状態を保持できるため正解。
  • ウ:論理積で48(00110000)と演算すると、ビット3が0になるためLED1が点灯しない。誤り。
  • エ:論理和で48と演算すると、ビット4と5も1になるため、意図しないビットが変わる可能性がある。誤り。

補足コラム

汎用入出力ポートのビット操作は、マイコン制御の基本です。特定のビットだけを操作したい場合は、ビットマスクと論理演算(AND, OR, XOR)を使い分けることが重要です。
特にLED制御などのハードウェア制御では、他のビットの状態を保持しつつ目的のビットだけを変更する技術が求められます。

FAQ

Q: なぜ論理和(OR)でビットをセットするのですか?
A: 論理和は指定したビットを1にし、他のビットはそのまま保持するため、他の信号に影響を与えません。
Q: 論理積(AND)を使うと何が問題ですか?
A: 論理積は指定ビット以外を0にする可能性があり、他のLEDの状態が変わってしまいます。

関連キーワード: ビット操作、論理演算、マイコン制御、LED点灯、ビットマスク、汎用入出力ポート
← 前の問題へ次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

応用情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてプライバシーポリシー利用規約特商法表記開発者について