基本情報技術者試験「1の補数と2の補数」の問題
8ビットで10進数の-90を表す。2の補数表現のビット列と、参考として1の補数表現のビット列の組合せとして正しいものはどれか。
ア2の補数10100110・1の補数10100101
イ2の補数10100101・1の補数10100110 と逆
ウ両方とも10100110
エ2の補数11011010・1の補数10100101 とする
正解
ア.2の補数10100110・1の補数10100101
90の2進数は01011010。全ビット反転で10100101がそのまま1の補数の-90、さらに1を加えた10100110が2の補数の-90である。両者の差はちょうど+1なので正しい。
?選択肢ごとの解説
ア ○90の2進数は01011010。全ビット反転で10100101がそのまま1の補数の-90、さらに1を加えた10100110が2の補数の-90である。両者の差はちょうど+1なので正しい。
イ ×2の補数と1の補数の値を入れ替えた誤りで、+1する前の値を2の補数としてしまっている。
ウ ×2の補数と1の補数を同じ値としており、両者が必ず1だけ異なるという関係を満たさない誤りである。
エ ×2の補数11011010は90の絶対値01011010の最上位だけ1にした絶対値方式で、補数化していない誤りである。
✎くわしく
1の補数は『全ビット反転』、2の補数は『反転して+1』で得られる。同じ負数でも2の補数は1の補数より必ず1大きいビット列になる。1の補数は0の表現が二通り(00000000と11111111)生じる欠点があり、現在は2の補数が主流である。
✓本番での押さえどころ
試験のコツ
手順を固定: 正数を2進化→反転(=1の補数)→+1(=2の補数)。2の補数は1の補数より1大きい、で検算する。
覚え方
1の補数=『裏返すだけ』、2の補数=『裏返して一歩前へ』。差は常に1、と覚える。
よくある誤り
1の補数と2の補数を取り違える、または絶対値の符号ビットだけ立てて補数化を忘れる誤りが多い。
基礎理論の他の問題
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0076