平成21年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
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)2 = 46
つまり、
(11010010)2 は −46 となる。


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



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