2の補数表現による負数の求め方

コンピュータで負数を表現する際の基本である、 2の補数 の求め方を問う問題です。元の正数 $n$ に対し、 ①全ビットを反転(1の補数)させ、②それに「1」を加算する という2ステップで負数 $-n$ が求められます。 まず①の「全ビットの反転」ですが、これはすべてが「1」であるビット列との 排他的論理和 (XOR) をとることで実現できます。8ビットのすべて「1」は $11111111_2$ なので、1の補数は (n XOR 11111111) と表現できます。 次に②の「1の加算」を行います。00000001 を足すだけなので、最終的な式は (n XOR 11111111) + 00000001 となり、エが正解です! ア・イ: 誤り。OR演算では全ビット反転はできません。対象のビットが強制的に「1」になるだけです。 ウ: 誤り。XOR 10000000 では「最上位ビットのみ」の反転になってしまい、全ビット反転になりません。 手順 n=00000101(5)の例 式 ① 全ビット反転 11111010 n XOR 11111111 ② 1を加える 11111011(−5) + 00000001 確かめ:n+(−n) 00000101+11111011=1 00000000 あふれを無視すると0

負数を2の補数で表すとき 8ビットの2進正数nに対し-nを求める式はどれか。ここで、+は加算を表し、ORはビットごとの論理和, XORはビットごとの排他的論理和を表す。

出典基本情報技術者試験 サンプル問題 科目A 問1
ア
(n OR 10000000) + 00000001
イ
(n OR 11111110) + 11111111
ウ
(n XOR 10000000) + 11111111
エ
(n XOR 11111111) + 00000001