平成28年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
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を超えることからも
 オーバーフローすることが判る。
A2の補数は整数を2進数で表現し、全ビットを反転させて、1を加えた値である。
 すなわち、 21 = 000101012 −21は 111010112 である。
B正しい。ちなみに1ビット右に動かすと、値は1/2になる。
C表現できる範囲は −128〜127である。
 nビットの場合 −(2n-1) 〜 2n-1−1 までを表現できる。
D最も小さい値は 100000002 で10進数の−127である。

EXCELのマクロのご相談なら ファーストマクロ 



V−2 目次 V−4
ファーストマクロ TOPページ