技術士の過去問
令和2年度(2020年)
基礎科目「情報・論理に関するもの」 問11

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

技術士 第一次試験 令和2年度(2020年) 基礎科目「情報・論理に関するもの」 問11 (訂正依頼・報告はこちら)

次の(   )に入る数値の組合せとして、最も適切なものはどれか。

次の図は2進数(anan−1… a2a1a02を10進数sに変換するアルゴリズムの流れ図である。ただし、nは0又は正の整数であり、ai∈{0,1}(i=0,1,…,n)である。

このアルゴリズムを用いて2進数(1101)2を10進数に変換すると、sには初め1が代入され、その後順に3、6と更新され、最後にsには13が代入されて終了する。このようにsが更新される過程を、
1 → 3 → 6 → 13
と表すことにする。同様に、2進数(11010101)2を10進数に変換すると、Sは次のように更新される。
1 → 3 → 6 → 13 →( ア )→( イ )→( ウ )→ 213
問題文の画像
  • ア:25  イ:52  ウ:105
  • ア:25  イ:52  ウ:106
  • ア:26  イ:52  ウ:105
  • ア:26  イ:53  ウ:105
  • ア:26  イ:53  ウ:106

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

アルゴリズムに関する問題は技術士として基本的な内容ですのでよく問われます。アルゴリズムの流れ図をよく見ながら、一つずつ条件を当てはめて考えていきましょう。

まず、問題の例に出されている(1101)2をこのアルゴリズムに当てはめて考えていきます。nは2進数の桁数より1少ない3となります。

sに初めにa3である1が代入されます。

i ← n-1 = 3-1 =2で、iが0以上ですから、次へ進んで、

s ← 1x 2 + a2 = 2+1 = 3

i ← 2-1 = 1 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 3x2 +a1 = 6+0 =6

i ← 1-1 =0 で、また iと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 6x2 + a0 = 12+1 =13

i ← 0-1 = -1で、またiと0の比較に戻ります。

iは0未満になりましたので、ここで終了となり、sは13となります。

同様のことを、8桁つまりn=7の2進数 (11010101)2について行っていきます。

Sに初めにa7である1が代入されます。

i ←n-1 = 7-1 =6で、iが0以上ですから、次へ進んで、

s ← 1x 2 + a6 = 2+1 = 3

i ← 6-1 = 5 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 3x 2 + a5 = 6+0 =6

i ← 5-1 = 4 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 6x 2 + a4 = 12+1 =13

i ← 4-1 = 3 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 13x 2 + a3 = 26+0 =26・・・ア

i ← 3-1 = 2 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 26x 2 + a2 = 52+1 =53・・・イ

i ← 2-1 = 1 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 53x 2 + a1 = 106+0 =106・・・ウ

i ← 1-1 = 0 で、またiと0の比較に戻ります。

iは0以上ですから、次へ進んで、

s ← 106x 2 + a0 = 212+1 =213

i ← 0-1 = -1 で、またiと0の比較に戻ります。

iは0未満になりましたので、ここで終了となり、sは213となります。

以上、ア:26, イ:53, ウ: 106, で正解選択肢は5となります。

参考になった数25

02

アルゴリズムに関する問題です。

設問の流れ図に沿って解きます。
sは始め、anすなわち1になります。

n=7になりますので
iは始め、n-1すなわち7-1=6になります。
6を1ずつマイナスし、iが0未満になるまで
s←s×2+aiによりsを更新していきます。

1回目:s=1 i=6
2回目:s=1×2+a6=1×2+1=3 i=5
3回目:s=3×2+a5=3×2+0=6 i=4
4回目:s=6×2+a4=6×2+1=13 i=3
5回目:s=13×2+a3=13×2+0=26 i=2
6回目:s=26×2+a2=26×2+1=53 i=1
7回目:s=53×2+a1=53×2+0=106 i=0
8回目:s=106×2+a0=106×2+1=213 i=-1
iが0未満になったので終了

したがってsは
1 → 3 → 6 → 13 →26→53→106→213の通り更新されるので5が正解です。

参考になった数15

03

<正解>5

[解説]

2進数を10進数に変換するアルゴリズムに関する計算問題です。

設問の流れ図に沿って解きます。

まず、nは、2進数の桁数を表すため、

2進数(11010101)は、

n=7となり、i= 0,1,2,3,4,5,6,7となります。

まず、sには、a=1が代入されます。

また、iには、n-1すなわち7-1=6が代入されます。

iと0を比較し、iが0になるまで、

s←s×2+aによりsを更新するとともに

i←i-1として、繰り返します。

このアルゴリズムに具体的に数値を入れていくと、

1回目:s=1 i=6

2回目:s=1×2+a=1×2+1=3 i=5

3回目:s=3×2+a=3×2+0=6 i=4

4回目:s=6×2+a=6×2+1=13 i=3

5回目:s=13×2+a=13×2+0=26 i=2

6回目:s=26×2+a=26×2+1=53 i=1

7回目:s=53×2+a=53×2+0=106 i=0

8回目:s=106×2+a=106×2+1=213 i=-1

8回目でiが0未満になるので、終了となります。

よって、sは、

1 → 3 → 6 → 13 → 26 → 53 → 106 → 213

と更新されるので、5が正解となります。

参考になった数8