技術士試験ナビ

技術士試験対策・テキスト・過去問題解説を発信します。

技術士第一次試験専門科目 平成28年度 Ⅲ-3

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

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

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

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

④ 表現できる範囲は,-128 から 128 までである。

⑤ 最も小さい値は 11111111 である。

 

 

答え

      ③

解説

 2の補数とは、2進数で表現した数について、0と1を反転させて1を足したものになります。
(これは2の補数の正しい定義ではありませんが、こういう性質を持っています)

 例えば、10進数の9を2進数で表すと1001ですが、この2の補数は0111になります。
  10(10進数)→1001(2進数)→0110(ビット反転)→0111(2の補数)

 また、以下のケースではオーバーフローとなり、正しく計算できません。

  • 最上位ビットが0の数どうしを加算した結果、最上位ビットが1になる
    (正の数の加算結果が負の数になる)
  • 最上位ビットが1の数どうしを加算した結果、最上位ビットが0になる
    (負の数の加算結果が正の数になる)

① 011101012 + 000011002 はオーバーフローしないで計算できる。
100000112となり,オーバーフローしてしまいます。

② 021 と -21 の 2 の補数表現は,全ビットの 0 と 1 を交換したものである。
全ビットを交換して,1を足すと正負が反転します。

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

④ 表現できる範囲は,-128 から 128 までである。
−128(100000002)から 127(011111112)までです。

⑤ 最も小さい値は 111111112 である。
最も小さい値は,-128(100000002)です。