応用情報技術者令和3年秋期 午前問23

nozさん  
(No.1)
「16進数の 08 と 48 を2進数表記にすると以下のようになります。」と解説が始まりますが、そもそも、16進数の08、48が出てくる理由が分かりません。
16進数の08、48がどこから出てくるか教えてください。
2023.01.21 17:14
y4 kさん 
(No.2)
この問題では、マイコンの汎用入出力ポートにLED1とLED2が接続されています。
又、汎用入出力ポートは8ビット(0~7)でLED1への出力はビット3、LED2への出力はビット6が設定されています。

このビット列を2進数で考えると設問の16進数が現れます。
LED1とLED2の両方への出力は0100 1000→16進で考えると48

LED1のみ出力するときは0000 1000→16進で考えると08

そして、読みだした出力値と0000 1000(16進なら08)の論理和を取れば、
LED2の状態に関係無くLED1を点灯できます。(これが答)
2023.01.21 18:06
nozさん  
(No.3)
y4 kさん回答ありがとうございます。
まだ、理解ができません。
LED1への出力はビット3なので2進数だと右から4桁目が1になり「0000 1000」?
となると、LED2への出力はビット6なので2進数だと右から7桁目が1になり「0100 0000」?
になると思います。

また、解説には「LEDを点灯させるには対応するビットに"1"を出力します。」とありますが、"1"を出力するとLEDが点灯するということは問題文に記載されていません。"1"を出力するとLEDが点灯するのはマイコンの汎用入出力ポートに接続されたLEDの常識なのでしょうか。
2023.01.21 21:52
y4 kさん 
(No.4)
汎用入出力ポートとLED1、LED2を接続しただけでは各LEDは点灯しません。
そして、点灯させるには指示を出力する必要がある。

その説明が無いのを疑問視するのなら、ここまでは”常識”と言わざるを得ないでしょう。
そして設問では、点灯させる為の指示を出す出口が、LED1ではビット3、LED2ではビット6に設定されています。

更に、情報処理分野では入出力などにおいて2進数で考えます。
0は未出力。1が出力です。

これに照らすと
両方消灯          → 0000 0000 (16進で00)
LED1のみ点灯      → 0000 1000 (16進で08)
LED2のみ点灯      → 0100 0000 (16進で40)
両方点灯          → 0100 1000 (16進で48)
となりますが、設問では「LED1を点灯させる」ことが目的です。
その為、16進00,16進40を話題にしていないだけです。
2023.01.22 13:36
nozさん  
(No.5)
y4 kさん回答ありがとうございます。
「その説明が無いのを疑問視するのなら、ここまでは”常識”と言わざるを得ないでしょう。」なるほど、分かりました。
そして、選択肢にあるLED2の状態に関係無くLED1を点灯させる条件は「読みだした出力値と0000 1000(16進なら08)の論理和」ということになるんですね。
2023.01.23 22:34

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop