本文へスキップ

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


Since 2016.4.19

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

W−1

次のC言語のプログラムを実行して得られる出力を、@〜Dの中から選べ。ただし、char型の変数値の内部表現は、8ビットの2の補数表現とする。

# include <stdio.h>
int main (void)
{
 char i, x;
 x = 0
 for (i = 1; i <= 20; i++) x += i;
 printf("%d\n", x);
 return 0;
}

@ -82  A -46  B 46  C 82  D 210


正解

A


解説

20回のループでは
1回目:x = 0 + 1
2回目:x = 1 + 2
3回目:x = 3 + 3
4回目:x = 6 + 4
・・・

つまり x = 1 + 2 + 3 + 4 + ・・・ + 20
を計算するプログラムである。

1 + 2 + 3 + 4 + ・・・ + 20
= 20 × (20+1) ÷ 2
210
(11010010)2

char型の変数値の内部表現は、8ビットの2の補数表現とする」と問題文に記載されているため、
(11010010)2が2の補数で表現されていることになる。

従って、ビットを反転させて、1を加えると、
(00101101)2 + 1 = (00101110)246
つまり、 (11010010)2-46 である。

目次 W−2