
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
5桁の2進数(01011)の2の補数と1の補数を求める補数表現の問題。k桁のn進数Xについて、nの補数はn^k−X、n−1の補数は(n^k−1)−Xとして定義される。
5桁の2進数(01011)₂について、2の補数(ア)と1の補数(イ)を求める問題。
① 1の補数=全ビットを反転、2の補数=1の補数+1
② 01011を反転 → 10100(1の補数)、+1 → 10101(2の補数)
③ ア10101・イ10100(③)
(01011)₂=11(10進数)。2の補数は2⁵−11=32−11=21=(10101)₂。1の補数は(2⁵−1)−11=31−11=20=(10100)₂。これはビットを反転する方法でも確認できる。01011の各ビットを反転すると10100(1の補数)、これに1を加えると10101(2の補数)である。したがってア=(10101)₂、イ=(10100)₂の③が正しい。
■ 2進数を10進数に直す
5桁の2進数は、左から16, 8, 4, 2, 1の位です。(01011)₂=8+2+1=11です。また、5桁の場合n^k=2⁵=32です。
■ 10進数の答えを2進数に戻す
21=16+4+1なので(10101)₂、20=16+4なので(10100)₂です。
2進数の1の補数は各ビットの反転、2の補数は1の補数に1を加えたもの(負数の表現に使う)。k桁のn進数Xのnの補数はn^k−X、n−1の補数は(n^k−1)−Xであり、2の補数=1の補数+1の関係が成り立つ。
キーワード: 補数、2の補数、1の補数、2進数、情報・論理