HOME»基本情報技術者令和8年度»科目B 問2
基本情報技術者令和8年度 科目B 問2
問2
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数 complement は,引数として渡された8ビット型の値 x について,x に加算すると00000000になる値を返す。8ビット型の加算は,値を符号なし2進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。演算子∧,∨,▽は,それぞれビット単位の論理積,論理和,排他的論理和を表す。
〔プログラム〕
関数 complement は,引数として渡された8ビット型の値 x について,x に加算すると00000000になる値を返す。8ビット型の加算は,値を符号なし2進数とみなしたときの加算とし,桁あふれが発生したときのあふれた桁は無視する。演算子∧,∨,▽は,それぞれビット単位の論理積,論理和,排他的論理和を表す。
〔プログラム〕

- 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 のビットを反転させる処理が当てはまります。
論理積・論理和・排他的論理和の各ビット演算には次のような特徴があります。
したがって「カ」の x ▽ 11111111 が正解となります。
したがって、変数 y に求めるビット列は x と加算したときに 1 00000000 になるものです。これは、x の各ビットを反転した値(足して11111111(2)=255(10)となる数)に1を加えることで求められます。空欄の一つ下の行では、「+1」する処理が行われているため、空欄部分には x のビットを反転させる処理が当てはまります。
論理積・論理和・排他的論理和の各ビット演算には次のような特徴があります。
- 論理積(AND)
- x と 0 の論理積は常に0、x と 1 の論理積は x となる
⇒ 1との論理積をとることで、特定範囲のビット列を取り出すことができる
- 論理和(OR)
- x と 0 の論理和は x そのままの値、x と 1 の論理和は常に 1 となる

- 排他的論理和(XOR)
- x と 0 の排他的論理和は x そのままの値、x と 1 の排他的論理和は x を反転させたビットとなる
⇒ 1との排他的論理和をとることで、特定範囲のビット列を反転させることができる
したがって「カ」の x ▽ 11111111 が正解となります。
