次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。…
科目B アルゴリズムとプログラミング 科目B 問2
次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。関数complement は,引数として渡された8 ビット型の値x について,x に加算すると00000000 になる値を返す。8 ビット型の加算は,値を符号なし2 進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。演算子∧,∨,▽は,それぞれビット単位の論理積,論理和,排他的論理和を表す。
正答 カ
正答は カ。空欄は「x ▽ 11111111」です。
x に加えると 00000000 になる値は、x の 2 の補数です(8 ビットの桁あふれを無視するので、x + y = 100000000(2 進)となる y を求めることになります)。2 の補数は、「全ビットを反転して 1 を加える」ことで求められます。ビットの反転は、11111111 との排他的論理和(▽)で行えます。1 との排他的論理和は 0 と 1 を入れ替え、そのビットを反転するからです。
【トレース(カの場合、x = 00000110 の例)】
解説の続きをみる続きを閉じる
y ← 00000110 ▽ 11111111 = 11111001
y ← 11111001 + 00000001 = 11111010
確認:00000110 + 11111010 = 1 00000000
→ 桁あふれした 1 を無視すると 00000000 になる
【ほかの選択肢(x = 00000110 の例)】
ア x ∧ 01111111 誤り
→ y = 00000110 + 1 = 00000111。x に加えると 00001101
イ x ∧ 11111111 誤り
→ x がそのまま残り、y = 00000111。アと同じ結果
ウ x ∨ 01111111 誤り
→ y = 01111111 + 1 = 10000000。x に加えると 10000110
エ x ∨ 11111111 誤り
→ y = 11111111 + 1 = 00000000(常に 0)。
x に加えても x のままで、x が 0 以外のときは合わない
オ x ▽ 01111111 誤り
→ 下位 7 ビットだけが反転され、y = 01111001 + 1 = 01111010。
x に加えると 10000000 で、最上位ビットが 0 にならない
【覚え方】
2 の補数 = ビット反転 + 1。
反転は「11111111 との XOR」、取り出し(マスク)は「AND」、特定のビットを 1 にするのは「OR」と、演算の役割を区別します。
出典:令和8年度 基本情報技術者試験 科目B 公開問題 問2(独立行政法人情報処理推進機構)出典元ページ
最終更新日
「科目B アルゴリズムとプログラミング」のほかの問題
- 2024年度(令和6年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問3次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問4次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
- 2024年度(令和6年度)公開問題 科目B 問5次のプログラム中の [a] ~ [c] に入れる正しい答えの組合せを,解答群の中から選べ
- 2025年度(令和7年度)公開問題 科目B 問1次のプログラム中の [a] と [b] に入れる正しい答えの組合せを,解答群の中から選べ
- 2025年度(令和7年度)公開問題 科目B 問2次のプログラム中の [ ] に入れる正しい答えを,解答群の中から選べ。
スポンサーリンク





