
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
整数を8ビットの2の補数で表現しているとき、00001010と11110001の和の10進数表現を求める問題。正答は−5。
2の補数表現による、2進数の加算と、その結果の10進数への変換を問う問題。
① 8ビットの2の補数: 普通の0〜255の数として足し、結果が128以上なら256を引く
② 00001010=10、11110001=241 → 10+241=251 → 251−256=−5
③ −5(③)。250や251は256を引き忘れた値
00001010は+10。11110001は、最上位ビットが1なので負数で、ビット反転して1を加えると00001111(=15)。したがって−15である。和は、10+(−15)=−5。2進数で加算すると、00001010+11110001=11111011。これは最上位ビットが1の負数で、ビット反転して1を加えると00000101(=5)、したがって−5である。よって③が正しい。
■ 2の補数表現の読み方
8ビットの2の補数表現では、最上位ビット(一番左)が0なら0以上の数、1なら負の数です。負の数の大きさ(絶対値)は、全ビットを反転(0と1を入れ替え)してから1を足すと分かります。例えば11110001は、反転すると00001110、1を足すと00001111=15なので、−15です。
8ビットの2の補数では、最上位ビットが1のとき負数。値は、ビット反転+1の絶対値に−を付ける(または、値−256)。11111011=251−256=−5。
キーワード: 2の補数、8ビット、負数、2進数の加算、整数表現、情報工学部門
同じ問題が計2回出題されています(平成27年度、平成30年度)。