令和8年度試験問題 科目B 問2

 次のプログラム中の に入れる正しい答えを,解答群の中から選べ。

 関数 complement は,引数として渡された8ビット型の値 x について,x に加算すると00000000になる値を返す。8ビット型の加算は,値を符号なし2進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。演算子∧,∨,▽は,それぞれビット単位の論理積,論理和,排他的論理和を表す。

〔プログラム〕
b02_1.png

  • x ∧ 01111111
  • x ∧ 11111111
  • x ∨ 01111111
  • x ∨ 11111111
  • x ▽ 01111111
  • x ▽ 11111111
正解 問題へ
分野:アルゴリズムとプログラミング
細目:プログラムの基本要素
解説
関数 complement が求めるのは、8ビットの値 x に加算したときに、結果が 00000000 になる値です。最上位ビットからあふれた桁は無視するため、実際の加算結果が 1 00000000、すなわち10進数で256になれば、8ビット部分には 00000000 だけが残ります。

したがって、変数 y に求めるビット列は x と加算したときに 1 00000000 になるものです。これは、x の各ビットを反転した値(足して11111111(2)=255(10)となる数)に1を加えることで求められます。空欄の一つ下の行では、「+1」する処理が行われているため、空欄部分には x のビットを反転させる処理が当てはまります。

論理積・論理和・排他的論理和の各ビット演算には次のような特徴があります。
論理積(AND)
x と 0 の論理積は常に0、x と 1 の論理積は x となる
⇒ 1との論理積をとることで、特定範囲のビット列を取り出すことができる
b02_2.png
論理和(OR)
x と 0 の論理和は x そのままの値、x と 1 の論理和は常に 1 となる
b02_3.png
排他的論理和(XOR)
x と 0 の排他的論理和は x そのままの値、x と 1 の排他的論理和は x を反転させたビットとなる
⇒ 1との排他的論理和をとることで、特定範囲のビット列を反転させることができる
b02_4.png
ビットの反転処理に使うのは、排他的論理和(▽)です。本問では8ビットの値 x を反転させたビット列を得たいので、8ビットすべてに1を設定したビット列(11111111)を用意し、x との排他的論理和をとることになります。

したがって「カ」の x ▽ 11111111 が正解となります。

Pagetop