本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成28年度 技術士第一次試験問題【専門科目】

V−3

整数を8ビットの、2の補数表現で表しているとする。次のうち最も適切なものはどれか。

@ 011101012 + 000011002 はオーバーフローしないで計算できる。

A 21と-21の2の補数表現は、全ビットの0と1を交換したものである。

B 値を2倍にするのに、オーバーフローが起こらない限り、1ビット左シフトで実現できる。

C 表現できる範囲は、-128から128までである。

D 最も小さい値は111111112である。


正解

B


解説

2の補数は、整数を2進数で表現し、全ビットを反転させて、1を加えた値である。
あるいは 10000000 から整数を2進数で表した数を引いた値である。

符号付き整数を2の補数表現で表す場合、最上位ビットが0の時は、0または、正の数を表し、最上位ビットが1の時は、負の数を表す。

従って、8ビットであれば、0または正の整数は、
00000000 〜 01111111、すなわち 0〜127を表現できる。
一方、負の整数は、
10000000 〜 11111111、これらは2の補数表現であるため、-128 〜 -1を表現できる。

@ 011101012+000011002 = 100000012 となり最上位ビットが1になるためオーバーフローする。ちなみに10進数では117+12 = 129となり、127を超えることからもオーバーフローすることが判る。

A 2の補数は整数を2進数で表現し、全ビットを反転させて、1を加えた値である。すなわち、21は 000101012、-21は 111010112である。

B 正しい。ちなみに1ビット右に動かすと、値は1/2になる。

C 表現できる範囲は -128〜127である。nビットの場合 -(2n-1) 〜 2n-1−1 までを表現できる。

D 最も小さい値は 100000002 で10進数の -127である。

V−2 目次 V−4