基数変換と補数 想定問題 2
コンピュータでは,負の整数を2の補数で表すことが多い。8ビットの2の補数表現では,0以上127以下の整数はそのまま2進数で表し,負の整数-xは,xの2の補数(28-x を2進数で表したもの)で表す。この表し方で,8ビットのビット列(11010110)2が表す10進数として,最も適切なものはどれか。
解説
ポイント
2の補数で表された8ビットのビット列が表す,10進数の負の数を求める問題です。
考え方と解き方
いちばん左のビットが1なので負の数です。負の数 −x は 256−x で表すので,そのまま10進数にした値を N とすると x=256−N です。
- そのまま10進数にする:128+64+16+4+2=214
- x=256−214=42 なので,表す数は −42
- 別の求め方:0と1を入れかえると (00101001)2=41,1を足して 42。やはり −42
- 確かめ:42=(00101010)2,2の補数は 256−42=214=(11010110)2 で一致。答えは ⑤ −42
ほかの選択肢
①(214):ビット列を負の数のきまりを使わずに,そのまま読んだ値です。
②(−86):左のビットを符号(−),残りの7ビット (1010110)2=86 を読んだ値です。これは2の補数ではなく「符号と絶対値」という別の表し方です。
③(−41):0と1を入れかえただけ(1の補数)で,1を足し忘れた値です。
覚えておくこと
- 1の補数は各桁の0と1を入れかえるだけ。2の補数はそれに1を足したもの(テキスト・覚えること)
- 8ビットの2の補数表現:いちばん左のビットが1なら負の数。負の数 −x は 256−x で表し,表せる範囲は −128〜127(テキスト・覚えること)
- 補数から元の数へは,そのまま10進数にした値 N を使って x=256−N(8ビットの場合)。または0と1を入れかえて1を足す(テキスト・解き方)
- 1を足し忘れた値(1の補数のまま)や,ビット列をそのまま10進数にした値(214 など)がまぎれている(テキスト・ひっかけ)
類似する過去問:令和2年度 基礎科目 I-2-4、平成30年度 基礎科目 I-2-3
テキスト「基数変換と補数」を読む