基本情報技術者試験 2003年度 = 平成15年度・春期 午前 問3

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

 ア (n OR 10000000)+ 00000001  イ (n OR 11111110)+ 11111111
 ウ (n XOR 10000000)+ 11111111  エ (n XOR 11111111)+ 00000001

解答

 エ

解説

 すべてのビットを反転(0を1にして、1を0にする)して得られるのが1の補数であり、それに1を加えることによって得られるのが2の補数です。
 たとえば、10101010の1の補数と2の補数は、以下のように求められます。

┏━┯━┯━┯━┯━┯━┯━┯━┓      ┃1│0│1│0│1│0│1│0┃      ┗━┷━┷━┷━┷━┷━┷━┷━┛              ↓ 全ビットを反転      ┏━┯━┯━┯━┯━┯━┯━┯━┓      ┃0│1│0│1│0│1│0│1┃ 1の補数 ┗━┷━┷━┷━┷━┷━┷━┷━┛              ↓ 1を加える        ┏━┯━┯━┯━┯━┯━┯━┯━┓      ┃0│1│0│1│0│1│1│0┃ 2の補数 ┗━┷━┷━┷━┷━┷━┷━┷━┛     

 この手順を覚えておけば、正しい選択肢はであることがすぐに分かります。すべてのビットが1である数値との排他的論理和(いずれか一方のみが1であれば1、そうでなければ0)をとると、すべてのビットが反転します。

     10101010   XOR  11111111  ━━━━━━━━━━━━      01010101

 これに1を加えると、2の補数が得られます。

     01010101   +  00000001  ━━━━━━━━━━━━      01010110



BohYoh.comトップページへ