平成22年秋期午後問8

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
論理演算子さん  
(No.1)
https://www.fe-siken.com/kakomon/22_aki/pm08.html
の設問2の空欄fで01又は10に切り替わりが多いものとあります。
Q1.そもそもどういう変化が起きてビット切り替わるのでしょうか?
Q2.なぜ"10100"、"10010"、"11010"、"10110"が切り替わりが最も多いと分かったのでしょうか?
2進数などの数学分野がよくわからないもんで...すみません。お手数おかけします。
2021.07.21 17:08
関数従属さん 
FE・シルバーエキスパート
(No.2)
Q1.
プログラム2における、図3の④や⑥の部分ですが、
変数Rの下2桁が"00"、"01"、"10"、"11"の内どれかを判定しており、
"01"の時(④が真)、⑤を行う  "10"の時(⑥が真)、⑦を行う
ようになっております。

変数Rには②でNの値が設定されます。
Nの値のビットにより切り替わりが起きる/起きないが変わります。

Q2.
問題文より負数は2の補数で表現であり、N < 0より最上位ビットは1となります。
また、②で変数Rに設定後、③により一番右に0が入りますが、
"01"の時(④が真)、⑤を行う  "10"の時(⑥が真)、⑦を行う
が何回行われるかは③により設定される一番右の0を含めて考えます。

即ち1XXX0の5ビットで考える事になります。
XXXについて000~111の8パターンを調べる事で、
ビット切り替え数が最大のものを探します。

10000・・切り替え1回
10010・・切り替え3回
10100・・切り替え3回
10110・・切り替え3回
11000・・切り替え1回
11010・・切り替え3回
11100・・切り替え1回
11110・・切り替え1回
2021.07.21 22:25
論理演算子さん  
(No.3)
ご回答ありがとうございます。なるほど。
全部で8種類の選択肢がありそれを順番にプログラムで実行していって条件分岐で切り替わる回数を数えていくのですね。とても分かりやすい説明ありがとうございます。
2021.07.22 21:28

返信投稿用フォーム

スパム防止のためにスレッド作成から30日以上経過したスレッドへの書き込みは禁止しています。

その他のスレッド


Pagetop