<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>情報落ち | 基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</title>
	<atom:link href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/tag/%E6%83%85%E5%A0%B1%E8%90%BD%E3%81%A1/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi</link>
	<description>基本情報技術者試験を学習する人のためにつくられた専門メディア。250本以上の記事を掲載し、勉強方法や各分野のポイント、過去問解説など、試験に役立つ情報を発信。試験対策書籍を執筆する著者が、はじめて学ぶ人でもわかりやすく解説します。（2023年度からの新制度に対応済み）</description>
	<lastBuildDate>Tue, 21 Jul 2026 09:45:11 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.29</generator>
	<item>
		<title>基本情報技術者試験 午前免除（修了試験）の講評 ～ 2022年7月24日実施</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/guide/report_fe_special_test_202207/</link>
		<pubDate>Mon, 25 Jul 2022 09:43:26 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[午前免除試験]]></category>
		<category><![CDATA[情報落ち]]></category>
		<category><![CDATA[新試験情報]]></category>
		<category><![CDATA[試験講評]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=guide&#038;p=6635</guid>
		<description><![CDATA[<p>試験対策講座の講師として、誠に勝手ながら、 2022 年 7 月 24 日（日）に実施された基本情報技術者午前免除試験（修了認定に係る試験）の講評をさせていただきます。 今回受験された人は振り返りの題材として、今後受験さ [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/guide/report_fe_special_test_202207/">基本情報技術者試験 午前免除（修了試験）の講評 ～ 2022年7月24日実施</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>試験対策講座の講師として、誠に勝手ながら、 2022 年 7 月 24 日（日）に実施された基本情報技術者午前免除試験（修了認定に係る試験）の講評をさせていただきます。</p>
<p>今回受験された人は振り返りの題材として、今後受験される人は対策の資料として、参考にしていただければ幸いです。</p>
<table class="mag_h30 center responsive-width centered">
<thead>
<tr>
<th>実施月</th>
<th>問題</th>
<th>解答</th>
</tr>
</thead>
<tbody>
<tr>
<td>2022 年 7 月</td>
<td><a href="https://www.ipa.go.jp/shiken/about/ug65p90000001bq0-att/tokurei_Mondai_20220724_FE.pdf" rel="noopener" target="_blank">問題</a></td>
<td><a href="https://www.ipa.go.jp/shiken/about/ug65p90000001bq0-att/tokurei_ans_20220724_FE.pdf" rel="noopener" target="_blank">解答</a></td>
</tr>
</tbody>
</table>
<style>table{font-size:.85em}thead{background:#e1f5fe;}dl.inline dd{margin-left: 2em;}.responsive-width{width:80%; margin:auto;}figcaption,caption{color:#9e9e9e;margin:1.5em auto;text-align:center;}@media screen and (max-width:600px){.responsive-width{width:100%}}</style>
<h2>他の試験区分の過去問題が 10 問程度出ることが定番化されている</h2>
<p>今回の試験の内容も、<a href="../report_fe_special_test_202206/">前回（ 2022 年 6 月 12 日）に実施された試験</a>と同様に、<span class="u">基本情報技術者試験以外の過去問題（応用情報技術者試験や情報セキュリティマネジメント試験などの過去問題）または古い過去問題（現時点で入手できる平成 21 年度春期より前の過去問題）が数多く出題</span>されていました。</p>
<p>この傾向は、 2021 年 7 月 25 日に実施された試験からなのですが、 <span class="bold">5 回も続いたのですから、もはや定番化されたと言える</span>でしょう。</p>
<p>&nbsp;</p>
<p>図 1 に、テクノロジ系の全 50 問の中で、他の試験区分の過去問題だったものの出題数を示します。 2021 年 6 月 13 日に実施された試験では、わずか 3 問でしたが、 2021 年 7 月 25 日以降に実施された試験では、常に 10 問程度になっています。</p>
<table class="striped responsive-width centered">
<caption>図 1　テクノロジ系の問題で、他の試験区分の過去問題だったもの</caption>
<thead>
<tr>
<th>試験実施日</th>
<th>他の試験区分の<br />過去問題の数（割合）</th>
</tr>
</thead>
<tbody>
<tr>
<td>2021 年<br />6 月 13 日（日）</td>
<td>3 問（ 6 % ）</td>
</tr>
<tr>
<td>2021 年<br />7 月 25 日（日）</td>
<td>8 問（ 16 % ）</td>
</tr>
<tr>
<td>2021 年<br />12 月 12 日（日）</td>
<td>15 問（ 30 % ）</td>
</tr>
<tr>
<td>2022 年<br />1 月 23 日（日）</td>
<td>12 問（ 24 % ）</td>
</tr>
<tr>
<td>2022 年<br />6 月 12 日（日）</td>
<td>12 問（ 24 % ）</td>
</tr>
<tr>
<td>2022 年<br />7 月 24 日（日）</td>
<td>8 問（ 16 % ）</td>
</tr>
</tbody>
</table>
<p>今後の試験でも、他の試験区分や古い過去問題が数多く出題されることが予想されます。 ただし、そのために他の試験区分や古い過去問題を学習するというわけにもいかないでしょう。 これまで通りに、基本情報技術者試験の過去問題を学習してください。</p>
<p>学習のときには、これまで以上に数多くの過去問題を学習して、正解できる問題の数を増やしてください。 もしも、試験当日に、見たこともないような問題に遭遇したら、その時はその時です。 自分の持てる知識を総動員すれば、何とかなります。</p>
<h2>全体の難易度はこれまでと同様だった</h2>
<p>問題の全体（問 1 ～問 80 ）の難易度は、どうだったでしょう。</p>
<p>図 2 は、今回の試験問題の分類と難易度を A, B, C で示したものです。この難易度は、私の講師経験から、</p>
<ul class="background c-round">
<li>受講者のほぼ全員ができるものを A （やさしい）</li>
<li>半数ぐらいができるものを B （ふつう）</li>
<li>ほとんどができないものを C （むずかしい）</li>
</ul>
<p>としたものです。</p>
<figure class="responsive-width">
<table class="striped block">
<caption>図 2 　今回の試験の問題の分類と難易度</caption>
<thead class="hide-on-small-only">
<tr>
<th>分野</th>
<th>問題番号（難易度）</th>
</tr>
</thead>
<tbody>
<tr>
<td>情報の基礎理論</td>
<td>問 1 (B), 問 2 (C), 問 3 (C), 問 4 (B), 問 5 (B), 問 9 (C)</td>
</tr>
<tr>
<td>アルゴリズム</td>
<td>問 7 (B), 問 8 (B),  問 10 (B)</td>
</tr>
<tr>
<td>ハードウェア</td>
<td>問 6 (B), 問 11 (B), 問 12 (A), 問 13 (A), 問 14 (B), 問 20 (B), 問 21 (B), 問 22 (C)</td>
</tr>
<tr>
<td>ソフトウェア</td>
<td>問 17 (B), 問 19 (B)</td>
</tr>
<tr>
<td>システム構成</td>
<td>問 15 (B), 問 16 (A), 問 18 (A)</td>
</tr>
<tr>
<td>マルチメディアとヒューマンインタフェース</td>
<td>問 23 (B), 問 24 (A)</td>
</tr>
<tr>
<td>データベース</td>
<td>問 25 (A), 問 26 (B), 問 27 (A), 問 28 (B), 問 29 (B)</td>
</tr>
<tr>
<td>ネットワーク</td>
<td>問 30 (B), 問 31 (B), 問 32 (B), 問 33 (A), 問 34 (B)</td>
</tr>
<tr>
<td>セキュリティ</td>
<td>問 35 (B), 問 36 (A), 問 37 (A), 問 38 (B), 問 39 (B), 問 40 (B), 問 41 (A), 問 42 (A), 問 43 (B), 問 44 (B)</td>
</tr>
<tr>
<td>開発技術</td>
<td>問 45 (A), 問 46 (B), 問 47 (B), 問 48 (B), 問 49 (A), 問 50 (B)</td>
</tr>
<tr>
<td>マネジメント系</td>
<td>問 51 (B), 問 52 (B), 問 53 (A), 問 54 (B), 問 55 (A), 問 56 (B), 問 57 (B), 問 58 (A), 問 59 (A), 問 60 (A)</td>
</tr>
<tr>
<td>ストラテジ系</td>
<td>問 61 (B), 問 62 (A), 問 63 (B), 問 64 (B), 問 65 (A), 問 66 (A), 問 67 (A), 問 68 (A), 問 69 (B), 問 70 (A), 問 71 (B), 問 72 (A), 問 73 (A), 問 74 (B), 問 75 (C), 問 76 (B), 問 77 (A), 問 78 (B), 問 79 (A), 問 80 (A)</td>
</tr>
</tbody>
</table><figcaption class="left-align"><i class="material-icons blue-text mag_rt05">info</i>マネジメント系とストラテジ系は、全体を 1 つの分野にしています。</figcaption></figure>
<p>全 80 問の難易度を集計すると、</p>
<p>A が 30 問、<br />
B が 45 問、<br />
C が 5 問</p>
<p>です。</p>
<p>A が 90 % できて、 B が 50 % できて、 C が 25 % できる（四択問題なので最低でも 25 % できます）とすれば、 1 問が 1.25 点なので、得点の期待値は、</p>
<p>1.25 点 × ( 30 × 0.9 ＋ 45 × 0.5 ＋ 5 × 0.25 )<br />
≒ 63.44 点</p>
<p>です。</p>
<p>図 3 に、今回を含めた過去 10 回の午前免除試験の得点の期待値を示します。</p>
<figure class="responsive-width">
<table class="centered striped">
<caption>図 3 　過去 10 回の午前免除試験の得点の期待値</caption>
<thead>
<tr>
<th width="20%">試験実施日</th>
<th>難易度 A</th>
<th>難易度 B</th>
<th>難易度 C</th>
<th>得点の期待値</th>
</tr>
</thead>
<tbody>
<tr>
<td>2020 年<br />6 月 14 日（日）</td>
<td>19 問</td>
<td>52 問</td>
<td>9 問</td>
<td>63.75 点</td>
</tr>
<tr>
<td>2020 年<br />7 月 26 日（日）</td>
<td>20 問</td>
<td>50 問</td>
<td>10 問</td>
<td>63.75 点</td>
</tr>
<tr>
<td>2020 年<br />12 月 13 日（日）</td>
<td>28 問</td>
<td>48 問</td>
<td>4 問</td>
<td>62.75 点</td>
</tr>
<tr>
<td>2021 年<br />1 月 24 日（日）</td>
<td>30 問</td>
<td>41 問</td>
<td>9 問</td>
<td>62.19 点</td>
</tr>
<tr>
<td>2021 年<br />6 月 13 日（日）</td>
<td>28 問</td>
<td>48 問</td>
<td>4 問</td>
<td>62.75 点</td>
</tr>
<tr>
<td>2021 年<br />7 月 25 日（日）<i class="material-icons pink-text">flag</i></td>
<td>30 問</td>
<td>42 問</td>
<td>8 問</td>
<td>62.50 点</td>
</tr>
<tr>
<td>2021 年<br />12 月 12 日（日）<i class="material-icons pink-text">flag</i></td>
<td>29 問</td>
<td>40 問</td>
<td>11 問</td>
<td>61.10 点</td>
</tr>
<tr>
<td>2022 年<br />1 月 23 日（日）<i class="material-icons pink-text">flag</i></td>
<td>27 問</td>
<td>47 問</td>
<td>6 問</td>
<td>63.50 点</td>
</tr>
<tr>
<td>2022 年<br />6 月 12 日（日）<i class="material-icons pink-text">flag</i></td>
<td>32 問</td>
<td>42 問</td>
<td>6 問</td>
<td>64.13 点</td>
</tr>
<tr>
<td>2022 年<br />7 月 24 日（日）<i class="material-icons pink-text">flag</i></td>
<td>30 問</td>
<td>45 問</td>
<td>5 問</td>
<td>63.44 点</td>
</tr>
</tbody>
</table><figcaption class="left-align"><i class="material-icons pink-text">flag</i> 印を付けた実施日の試験から、他の試験区分や古い過去問題が多くなっています。</figcaption></figure>
<p>他の試験区分の過去問題や古い過去問題が多くて難しく感じたかもしれませんが、<span class="u">今回の試験の全体の難易度は、これまでの試験と同様</span>でした。</p>
<h2>自分の持てる知識を総動員すれば何とかなる問題の例</h2>
<p>先ほど</p>
<blockquote>
<p class="blue-grey-text">試験当日に、見たこともないような問題に遭遇したら、その時はその時です。 自分の持てる知識を総動員すれば何とかなります</p>
</blockquote>
<p>と説明しましたが、そのような問題の例を示しましょう。</p>
<p>&nbsp;</p>
<p>以下は、今回の試験の問 1 です。 いきなり 1 問目で、見たこともないような問題に遭遇したので驚かれたでしょう。</p>
<p>この問題は、平成 20 年度 春期 基本情報技術者試験の問 5 として出題され、それ以降は出題されたことがありません。 現時点で入手できるのは、平成 21 年度 春期以降の過去問題なのですから、見たことがなくても当然です。</p>
<div class="card-panel mag_h30">
問 1</p>
<p>浮動小数点表示の仮数部が 23 ビットであるコンピュータで計算した場合，情報落ちが発生する計算式はどれか。ここで， ( ) 内の数は 2 進数とする。</p>
<dl class="inline" style="overflow:auto;white-space:nowrap;">
  <span class="hide-on-med-and-up grey-text small-text"><i class="material-icons">swipe</i> 式はスクロールできます</span></p>
<dt>ア</dt>
<dd>(10.101)<sub>2</sub> × 2<sup>-16</sup> &#8211; (1.001)<sub>2</sub> × 2<sup>-15</sup></dd>
<dt>イ</dt>
<dd>(10.101)<sub>2</sub> × 2<sup>16</sup> &#8211; (1.001)<sub>2</sub> × 2<sup>16</sup></dd>
<dt>ウ</dt>
<dd>(1.01)<sub>2</sub> × 2<sup>18</sup> + (1.01)<sub>2</sub> × 2<sup>-5</sup></dd>
<dt>エ</dt>
<dd>(1.001)<sub>2</sub> × 2<sup>20</sup> + (1.1111)<sub>2</sub> × 2<sup>21</sup></dd>
</dl>
</div>
<p>この問題を見て「できない」と決めつけずに、「見たことがなくても基本情報技術者試験として出題された問題なのだから、自分の持てる知識を総動員すれば何とかなるはずだ」と思ってチャレンジしてください。</p>
<p>この問題のテーマは、<span class="bold">「情報落ち」</span>です。</p>
<p>基本情報技術者試験の勉強をきちんとしていれば、情報落ちという言葉の説明や、情報落ちに関する別の問題を見たことがあるでしょう。</p>
<dl class="background c-round">
<dt><span class="u">情報落ちとは</span></dt>
<dd>浮動小数点数で、大きな値と小さな値の加減算を行うと、小さな値の一部が結果に反映されなくなることです。 これは、大きな値の指数に合わせて加減算が行われるからです。</dd>
</dl>
<p>たとえば、 10 進数で例を示すと、<br />
<i class="material-icons indigo-text">navigate_next</i> 1.23 × 10<sup>100</sup> + 4.56 × 10<sup>-100</sup><br />
という加算は、大きな値の 10<sup>100</sup> という指数に合わせて、<br />
<i class="material-icons indigo-text">navigate_next</i> 1.23 × 10<sup>100</sup> + 0.0000000000&#8230;0000456 × 10<sup>100</sup><br />
として行われます。</p>
<p>コンピュータで取り扱える桁数は有限なので、<br />
<i class="material-icons indigo-text">navigate_next</i> 0.00000&#8230;000000000456<br />
の部分が途中で打ち切られて<br />
<i class="material-icons indigo-text">navigate_next</i> 0.00000&#8230;0 （つまりゼロ）<br />
になり、 456 という情報が失われてしまいます。 これが、情報落ちです。</p>
<p>&nbsp;</p>
<p>問題を見てみましょう。</p>
<p>選択肢の中で、大きな値と小さな値で加減算を行っているのは、選択肢ウの</p>
<blockquote>
<p class="blue-grey-text">(1.01)<sub>2</sub> × 2<sup>18</sup> + (1.01)<sub>2</sub> × 2<sup>-5</sup></p>
</blockquote>
<p>だけです。 したがって、選択肢ウが正解です。</p>
<p>問題に示された</p>
<blockquote>
<p class="blue-grey-text">仮数部が 23 ビット</p>
</blockquote>
<p>を気にする必要はありません。 選択肢の中で 1 つだけが正解であり、選択肢ウ以外の選択肢は、大きな値と小さな値の加減算になっていないからです。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span> ウ</p>
<h2>新制度では科目 A 試験免除になる見込み</h2>
<p>すでにご存じの人も多いと思いますが、基本情報技術者試験は、令和 5 年度（ 2023 年度） 4 月から制度が大きく変わります。</p>
<p>これまでの午前試験と午後試験は、科目 A 試験と科目 B 試験という名称になり、問題の構成も変わります。 したがって新制度では、これまでの午前免除試験が、科目 A 免除試験に変わる見込みです（まだ未確定です）。</p>
<p>科目 A 試験の内容は、問題数と試験時間が減ったこと以外は、午前試験の内容と同様です（ 80 問で 150 分から、 60 問で 90 分に変わります）。 今後、科目 A 免除試験を受ける場合は、これまでと同様に、午前試験の過去問題を数多く解いて練習しておけば OK でしょう。</p>
<div class="divider mag_tp50 mag_bt30"></div>
<p>以上、試験対策講座の講師として、誠に勝手ながら、試験問題の講評をさせていただきました。</p>
<p>今回の午前免除試験に合格できた人は、ここで気を緩めずに、すぐに午後試験の学習を始めてください。 残念な結果になってしまった人は、ここで気落ちせずに、午前試験と午後試験の学習を並行して進めてください。</p>
<p>いずれの場合も、本試験の当日まで、コツコツと学習を続けていれば、必ず良い結果が得られるはずです。 皆様のご健闘をお祈り申し上げます！</p>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/guide/report_fe_special_test_202207/">基本情報技術者試験 午前免除（修了試験）の講評 ～ 2022年7月24日実施</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>基本情報でわかる コンパイラ 最適化</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/mastering_tech/compiler_optimization/</link>
		<pubDate>Mon, 15 Feb 2021 06:44:19 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[ソフトウェア]]></category>
		<category><![CDATA[午前問題と午後問題の違い]]></category>
		<category><![CDATA[情報落ち]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=mastering_tech&#038;p=5115</guid>
		<description><![CDATA[<p>この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。 午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸 [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/mastering_tech/compiler_optimization/">基本情報でわかる コンパイラ 最適化</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。</p>
<p>午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸暗記では得られない明確さで、用語を理解できるようになります。</p>
<p>今回のテーマは、 <span class="bold">コンパイラの最適化</span> です。</p>
<style>pre{font-family:'consolas','Courier New',"HCo Gotham SSm",Gotham,"ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic ProN","Hiragino Sans","BIZ UDPGothic",Meiryo,sans-serif!important;background:#292a33;color:#eceff1;font-size:1em;line-height:1.8;margin:1.5em auto;margin:1em -7.5%;padding:1em 7.5%}code{font-family:'consolas','Courier New',"HCo Gotham SSm",Gotham,"ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic ProN","Hiragino Sans","BIZ UDPGothic",Meiryo,sans-serif!important;background:#292a33;color:#eceff1;font-size:1em;line-height:1.8;padding:.25em;margin:auto.5em;border-radius:.25em;}.commentout{color:#797c93;}dl.inline dd{margin-left:3.5em;}th{text-align:center;}</style>
<div class="pad_20 grey lighten-5 blue-grey-text hide-on-med-and-up c-round mag_h40 small-text">
<i class="material-icons light-blue-text mag_rt05">info</i>編集部注: スマートフォンでご覧の際は、アルゴリズムを横スクロールすると全文をご覧になれます
</div>
<h2>コンパイラの最適化とは？</h2>
<p>プログラムを実行する方式には、大きく分けて <span class="u">インタプリタ</span> と <span class="u">コンパイラ</span> があります。</p>
<p>インタプリタは、プログラムの内容を 1 行ずつマシン語（コンピュータが直接理解できる命令）に逐次変換しながら逐次実行します。</p>
<p>コンパイラは、プログラムのすべての内容をマシン語に一括変換してから一括実行します。</p>
<p>&nbsp;</p>
<p>インタプリタとコンパイラには、それぞれ長所と短所がありますが、今回のテーマである「最適化（ optimization ）」は、コンパイラの長所です。</p>
<p>最適化とは、プログラムをマシン語に一括変換するときに、プログラムの中にある無駄を排除することです。これによって、プログラムの実行速度を向上させたり、プログラムのサイズを小さくしたりできます。</p>
<p>&nbsp;</p>
<p>たとえば、図 1 に示した 3 行のプログラムがあるとしましょう。ここでは、基本情報技術者試験の擬似言語でプログラムを記述しています。<code>Print</code>は、引数の値を画面に表示する関数だとします。</p>
<figure class="mag_h30"><figcaption>図 1　無駄があるプログラムの例</figcaption><pre>
・A ← 123
・A ← 123
・Print(A)
</pre>
</figure>
<p>このプログラムでは、</p>
<pre>・A ← 123</pre>
<p>という同じ処理（変数 A に 123 という適当な値を代入する処理）が、わざとですが、 2 回記述されています。同じ処理を 2 回記述することは無駄なことなので、コンパイラは、プログラムの内容を図 2 であると解釈して、マシン語に変換します。 <code>・A ← 123</code>という処理を 1 回だけにしていることが最適化です。</p>
<figure class="mag_h30"><figcaption>図 2　無駄を排除したプログラムの例</figcaption><pre>
・A ← 123
・Print(A)
</pre>
</figure>
<p>さらに、コンパイラは、「このプログラムは、画面に 123 を表示できればよいのだから、変数 A を使うことは無駄である」と解釈して、図 3 に示したように最適化します。画面に 123 を表示する<code>・Print(123)</code>という処理だけになりました。</p>
<figure class="mag_h30"><figcaption>図 3　さらに無駄を排除したプログラムの例</figcaption><pre>
・Print(123)
</pre>
</figure>
<p>コンパイラに最適化ができるのは、プログラムのすべての内容を見てからマシン語に変換するからです。すべてを見れば、無駄があることがわかります。</p>
<p>それに対して、<span class="u">インタプリタには、最適化ができません。</span>なぜなら、プログラムの内容を 1 行ずつ見ているので、無駄があることがわからないからです。</p>
<p>たとえば、先ほど図 1 に示した 3 行のプログラムをインタプリタで実行すると、図 4 の (1), (2), (3) の順に、逐次変換されて、逐次実行されます。</p>
<figure class="mag_h30"><figcaption>図 4　無駄があるプログラムをインタプリタで実行した場合</figcaption><pre>
・A ← 123     <span class="commentout">・・・(1) この 1 行をマシン語に変換して実行する</span>
・A ← 123     <span class="commentout">・・・(2) この 1 行をマシン語に変換して実行する</span>
・Print(A)    <span class="commentout">・・・(3) この 1 行をマシン語に変換して実行する</span>
</pre>
</figure>
<h2>コンパイラの最適化 に関する午前問題</h2>
<p>コンパイラの最適化の意味がわかったところで、午前問題を解いてみましょう。以下に問題を示します。</p>
<p>選択肢の中にある「オブジェクトコード」とは、マシン語のことです。「ソースコード」とは、マシン語に変換される前のプログラムのことです。</p>
<div class="card-panel mag_h30">
問 19　平成 28 年度 春期 午前</p>
<p>コンパイラにおける最適化の説明として，適切なものはどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>オブジェクトコードを生成する代わりに，インタプリタ用の中間コードを生成する。</dd>
<dt>イ</dt>
<dd>コンパイルを実施するコンピュータとは異なるアーキテクチャをもったコンピュータで動作するオブジェクトコードを生成する。</dd>
<dt>ウ</dt>
<dd>ソースコードを解析して，実行時の処理効率を高めたオブジェクトコードを生成する。</dd>
<dt>エ</dt>
<dd>プログラムの実行時に，呼び出されたサブプログラム名やある時点での変数の内容を表示するようなオブジェクトコードを生成する。</dd>
</dl>
</div>
<blockquote class="grey-text"><p>ソースコードを解析して、実行時の処理効率を高めたオブジェクトコートを生成する</p></blockquote>
<p>と説明している選択肢ウが正解です。</p>
<p>その他の選択肢が何の説明であるかは、気にしないでください。他のツールの説明の場合もありますが、まったくデタラメの場合もあるからです。</p>
<p class="mag_tp20 mag_bt40"><span class="chip mag_rt05">解答</span>ウ</p>
<h2>コンパイラの最適化に関する午後問題（最適化の具体例）</h2>
<p>以下は、コンパイラの最適化に関する午後問題を一部抜粋したものです。</p>
<p>他の記事でも書きましたが「基本情報技術者試験は、実によくできているなあ！」と思います。この問題の前半部では、コンパイラの最適化の様々な具体例を示しています。そして、後半部では、コンパイラの最適化の弊害を示しています。</p>
<p>つまり、<span class="u">コンパイラの最適化は、確かに便利ではあっても、いいことづくめではない、ということを示している</span>のです。この問題によって、コンパイラの最適化を深く理解できます。</p>
<div class="card-panel mag_h30">
問 2　平成 24 年度 春期 午後（一部抜粋）</p>
<p>　コンパイラの最適化に関する次の記述を読んで，設問 1 ～ 3 に答えよ。</p>
<div class="mag_lt10">　コンパイラとは，プログラム言語で記述された原始プログラムを翻訳して目的プログラムを生成するためのソフトウェアである。コンパイラの機能の一つに最適化がある。最適化では，原始プログラムを翻訳する過程で，プログラムの実行時間を短くするために原始プログラムの構造を変換する。最適化の方法の例を表 1 に示す。</div>
<table class="striped mag_h30">
<caption>表 1 最適化の方法の例</caption>
<thead>
<tr>
<th width="30%">最適化の方法</th>
<th width="70%">内容</th>
</tr>
</thead>
<tbody>
<tr>
<td>関数のインライン展開</td>
<td>関数を呼び出す箇所に，呼び出される関数のプログラムを展開する。</td>
</tr>
<tr>
<td>共通部分式の削除</td>
<td>同じ式が複数の箇所に存在し，それらの式で使用している変数の値が変更されず，式の値が変化しないとき，その式の値を作業用変数に格納する文を追加し，複数の同じ式をその作業用変数で置き換える。</td>
</tr>
<tr>
<td>定数の畳込み</td>
<td>プログラム中の定数同士の計算式を，その計算結果で置き換える。</td>
</tr>
<tr>
<td>定数伝播</td>
<td>変数を定数で置き換える。</td>
</tr>
<tr>
<td>無用命令の削除</td>
<td>プログラムの実行結果に影響しない文を削除する。</td>
</tr>
<tr>
<td>ループ内不変式の移動</td>
<td>ループ中で値の変化しない式があるとき，その式をループの外に移動する。</td>
</tr>
<tr>
<td>ループのアンローリング</td>
<td>ループ中の繰返しの処理を展開する。</td>
</tr>
</tbody>
</table>
<p>　擬似言語の形式で記述したプログラムの一部 (以下，プログラム 1 という) に対して，表 1 の最適化の方法を複数組み合わせて最適化した例を，表 2 に示す。</p>
<p>〔プログラム 1 〕</p>
<pre class="mag_w00">
■ i : 0, i ≦ 1, 1
| • x[i] ← y[i] + m + n
| • v[i] ← w[1] + m + n
■
</pre>
<table class="mag_h30 block responsive-width">
<caption>表 2 プログラム 1 の最適化の例</caption>
<thead>
<tr>
<th>最適化の方法</th>
<th>プログラム 1 の変換</th>
</tr>
</thead>
<tbody>
<tr>
<th>(1)</th>
<td>
<pre class="mag_w00">
■ i : 0, i ≦ 1, 1
| ･ t ← m + n
| ･ x[i] ← y[i] + t
| ･ v[i] ← w[i] + t
■
</pre>
</td>
</tr>
<tr>
<th>(2)</th>
<td>
<pre class="mag_w00">･ t ← m + n
■ i : 0, i ≦ 1, 1
| ･ x[1] ← y[1] + t
| ･ v[1] ← w[1] + t
■
</pre>
</td>
</tr>
<tr>
<th>(3)</th>
<td>
<pre class="mag_w00">･ t ← m + n
･ x[0] ← y[0] + t
･ v[0] ← w[0] + t
･ x[1] - y[1] + t
･ v[1] - w[1] + t
･ i ← 2
</pre>
</td>
</tr>
</tbody>
</table>
<dl class="inline">
<dt>設問 1</dt>
<dd>次の記述中の<span class="blank"></span>に入れる正しい答えを，解答群の中から選べ。</dd>
<dl>
<div class="mag_lt10 mag_h30">表 2 において，最適化の方法を (1)，(2)，(3) の順で適用するとき， (2) で適用される最適化の方法は<span class="blank">a</span>であり， (2) で適用される最適化の方法は<span class="blank">b</span>である。</div>
<p>a， b に関する解答群<br />
ア　関数のインライン展開　　<br class="hide-on-med-and-up">イ　共通部分式の削除<br />
ウ　定数の畳込み　　<br class="hide-on-med-and-up">エ　定数伝播<br />
オ　無用命令の削除　　<br class="hide-on-med-and-up">カ　ループ内不変式の移動<br />
キ　ループのアンローリング
</div>
<p>前半部の設問 1 を解いてみましょう。</p>
<p>表 1 に最適化の方法の具体例が示されていて、表 2 の (2) と (3) で適用されている方法が、どの方法に該当するかを答える問題です。せっかくなので、表 2 の (1) から説明しましょう。最適化は、(1) → (2) → (3) の順に進んで行くからです。</p>
<p>以下に、最適化する前のプログラムと、 (1) で最適化した後のプログラムを示します。</p>
<figure class="mag_h30"><figcaption>最適化する前のプログラム</figcaption><pre>
■ i : 0, i ≦ 1, 1
| • x[i] ← y[i] + m + n
| • v[i] ← w[1] + m + n
■
</pre>
</figure>
<figure class="mag_h30"><figcaption>(1) で最適化した後のプログラム</figcaption><pre>
■ i : 0, i ≦ 1, 1
| ･ t ← m + n
| ･ x[i] ← y[i] + t
| ･ v[i] ← w[i] + t
■
</pre>
</figure>
<p>繰り返し処理の中で、同じ<code>m + n</code>という加算が 2 回行われています。これは、無駄なことです。</p>
<p>そこで、<code>・t ← m + n</code>という処理を追加して加算結果を変数 t に代入し、これまでの<code>m + n</code>の部分を<code>t</code>に置き換えています。これによって、加算は 1 回だけになります。</p>
<p>これは、表 1 の中で</p>
<blockquote class="grey-text"><p>同じ式が複数の個所に存在し、それらの式で使用している変数の値が変更されず、式の値が変化しないとき、その式の値を作業用変数に格納する文を追加し、複数の同じ式をその作業用変数で置き換える</p></blockquote>
<p>に該当するので、「共通部分式の削除」です。ここでは、 t が作業用変数です。</p>
<p>&nbsp;</p>
<p>以下に、 (1) で最適化した後のプログラムと、 (2) で最適化した後のプログラムを示します。</p>
<figure class="mag_h30"><figcaption>(1) で最適化した後のプログラム</figcaption><pre>
■ i : 0, i ≦ 1, 1
| ･ t ← m + n
| ･ x[i] ← y[i] + t
| ･ v[i] ← w[i] + t
■
</pre>
</figure>
<figure class="mag_h30"><figcaption>(2) で最適化した後のプログラム</figcaption><pre>
･ t ← m + n
■ i : 0, i ≦ 1, 1
| ･ x[1] ← y[1] + t
| ･ v[1] ← w[1] + t
■
</pre>
</figure>
<p><code>・t ← m + n</code>において、 m + n の演算結果と、変数 t に代入される値は、繰り返し処理の中で、常に同じです。同じ演算と代入を繰り返すのは、無駄なことです。</p>
<p>そこで、<code>・t ← m + n</code>を繰り返しの外に出しています。</p>
<p>これは、表 1 の中で</p>
<blockquote class="grey-text"><p>ループ中で値の変化しない式があるとき、その式をループの外に移動する</p></blockquote>
<p>に該当するので、「ループ内不変式の移動」です。したがって、空欄 a の正解は、選択肢カです。ループ（ loop ）とは、「繰り返し」という意味です。</p>
<p>&nbsp;</p>
<p>以下に、 (2) で最適化した後のプログラムと、 (3) で最適化した後のプログラムを示します。</p>
<figure class="mag_h30"><figcaption>(2) で最適化した後のプログラム</figcaption><pre>
･ t ← m + n
■ i : 0, i ≦ 1, 1
| ･ x[1] ← y[1] + t
| ･ v[1] ← w[1] + t
■
</pre>
</figure>
<figure class="mag_h30"><figcaption>(3) で最適化した後のプログラム</figcaption><pre>･ t ← m + n
･ x[0] ← y[0] + t
･ v[0] ← w[0] + t
･ x[1] - y[1] + t
･ v[1] - w[1] + t
･ i ← 2
</pre>
</figure>
<p><code>■ i：0, i ≦ 1, 1</code>という構文を使った繰り返し処理は、 2 回の繰り返しを行います。たった 2 回の繰り返しのために、変数 i を 0 に初期化し、<code>i ≦ 1</code>というチェックと変数 i に 1 を加算する処理を毎回行うのは、無駄なことです。</p>
<p>そこで、<code>■ i：0, i ≦ 1, 1</code>という構文を使った繰り返しをやめて、 2 回の処理を、そのまま記述しています。プログラムが長くなりましたが、変数 i に関する処理がなくなったので、実行速度は速くなります。</p>
<p>これは、表 1 の中で</p>
<blockquote class="grey-text"><p>ループ中の繰り返しの処理を展開する</p></blockquote>
<p>に該当するので、「ループのアンローリング」です。したがって、空欄 b の正解は、選択肢キです。</p>
<h2>コンパイラの最適化に関する午後問題（最適化の弊害）</h2>
<p>設問 2 は省略して、後半部の設問 3 を解いてみましょう。</p>
<div class="card-panel mag_h30">
<dl class="inline">
<dt>設問 3</dt>
<dd>次の記述中の<span class="blank"></span>に入れる適切な答えを，解答群の中から選べ。</dd>
</dl>
<div class="mag_lt10 mag_h10">最適化をしないときと最適化をしたときとで浮動小数点数の演算の結果が異なる場合がある。プログラム 1 に対して表 2 の最適化をしなかったものと，最適化 をしたものとに， y[0] = 3307000000.0， y[1] = 305000000.0， m = -303000000.0， n = 4.0 を与えて実行した。その結果の x[0]， x[1] が次のとおりになった。ここで，同一優先順位の算術演算子は，左から順に演算する。</p>
<dl class="inline mag_lt10 mag_h10">
<dt>最適化をしないとき:</dt>
<dd style="margin-left:10em">x[0] = 4000004.0, x[1] = 2000004.0</dd>
<dt>最適化をしたとき:</dt>
<dd style="margin-left:10em">x[0] = 4000000.0, x[1] = 2000000.0</dd>
</dl>
<p>この実行結果が異なる原因としては，<span class="blank">d</span>の方法の適用によって演算順序が変化したことで，<span class="blank">e</span>が発生したからである。ここで，浮動小数点数の演算は単精度 (仮数部は 23 ビット) で計算しているものとする。
</div>
<p>d に関する解答群</p>
<p>ア　関数のインライン展開　　<br class="hide-on-med-and-up">イ　共通部分式の削除<br />
ウ　定数の畳込み　　<br class="hide-on-med-and-up">エ　定数伝播<br />
オ　無用命令の削除　　<br class="hide-on-med-and-up">カ　ループ内不変式の移動<br />
キ　ループのアンローリング</p>
<p>e に関する解答群</p>
<p>ア　桁あふれ　　イ　桁落ち　　<br class="hide-on-med-and-up">ウ　情報落ち　　エ　丸め誤差
</div>
<p>この設問の内容は、「最適化をしたら、浮動小数点数の演算の結果に誤差が生じてしまった」ということです。</p>
<p>最適化をしないときの　x[0] = 4000004.0 と x[1] = 2000004.0 は、正しい値です。</p>
<p>それに対して、最適化をしたときの x[0] = 4000000.0 と x[1] = 2000000.0 では、 4.0 の部分が失われて、誤差が生じています。</p>
<p>これは、浮動小数点数において、大きな値と小さな値を加算または減算すると、大きな値の指数に合わせて演算されるので、小さな値が 0 になってしまう（情報が消えてしまう）、という誤差であり、<span class="bold">情報落ち</span>と呼ばれます。</p>
<p>したがって、空欄 e の正解は、選択肢ウです。</p>
<p>&nbsp;</p>
<p>ここでは、 y[0] = 307000000.0, y[1] = 305000000.0, m = -303000000.0, n = 4.0 なので、 y[0], y[1], m が大きな値であり、 n が小さな値です。</p>
<p>問題文に</p>
<blockquote class="grey-text"><p>同一優先順位の算術演算子は、左から順に演算する</p></blockquote>
<p>とあるので、最適化をしたことによって、演算の順序が変わってしまい、大きな値と小さな値の加算または減算が生じたのです。</p>
<p>&nbsp;</p>
<p>以下は、最適化する前のプログラム（最適化をしないときのプログラム）です。</p>
<figure class="mag_h30"><figcaption>最適化する前のプログラム</figcaption><pre>
■ i : 0, i ≦ 1, 1
| • x[i] ← y[i] + m + n
| • v[i] ← w[1] + m + n
■
</pre>
</figure>
<p><code>・x[i] ← y[i] + m + n</code>という演算では、まず、 y[i] と m という大きな値どうしの加算が行われ、その結果として小さな値が得られます。</p>
<p>次に、その小さな値と n という小さな値どうしの加算が行われます。これなら、情報落ちは生じません。これは、<code>・v[i] ← w[i] + m + n</code>の部分でも同様です。</p>
<p>&nbsp;</p>
<p>以下は、 (1) で最適化した後のプログラムです。</p>
<figure class="mag_h30"><figcaption>(1) で最適化した後のプログラム</figcaption><pre>
■ i : 0, i ≦ 1, 1
| ･ t ← m + n
| ･ x[i] ← y[i] + t
| ･ v[i] ← w[i] + t
■
</pre>
</figure>
<p>問題の前半部で説明した「共通部分式の削除」という方法で、<code>・t ← m + n</code>という処理を行っています。</p>
<p>これは、 m という大きな値と、 n という小さな値の加算なので、情報落ちが生じる場合があります。</p>
<p>したがって、空欄 d の正解は、選択肢イです。</p>
<div class="grey lighten-5 mag_h30 pad_20 c-round">
<i class="material-icons light-blue-text">search</i><span class="blue-grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/情報落ち/" class="tag">情報落ち</a>
</div>
<p>&nbsp;</p>
<p><span class="chip mag_rt05">解答</span>設問 1　a &#8211; カ, b &#8211; キ　設問 3　d &#8211; イ, e &#8211; ウ</p>
<div class="divider mag_h50"></div>
<p>いかがでしたか？</p>
<p>午前問題と午後問題のセットで、コンパイラの最適化を、しっかりと理解できたでしょう。</p>
<p>この連載では、今後も、多くの受験者が苦手としている用語を取り上げて行きます。それでは、またお会いしましょう！</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/mastering_tech/compiler_optimization/">基本情報でわかる コンパイラ 最適化</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>「厳選5題」過去問と解説 &#124; 平成22年度 秋期 の過去問やるならこれをやれ</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h22_autumn/</link>
		<pubDate>Tue, 19 Nov 2019 09:42:31 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[ディスク]]></category>
		<category><![CDATA[午前問題]]></category>
		<category><![CDATA[情報落ち]]></category>
		<category><![CDATA[過去問演習]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=kakomon-gensen&#038;p=2847</guid>
		<description><![CDATA[<p>ここでは、平成 22 年度 秋期 基本情報技術者試験の午前試験 の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。 やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習し [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h22_autumn/">「厳選5題」過去問と解説 | 平成22年度 秋期 の過去問やるならこれをやれ</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>ここでは、<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_2/2010h22a_fe_am_qs.pdf" rel="noopener" target="_blank">平成 22 年度 秋期 基本情報技術者試験の午前試験</a> の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。</p>
<p>やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習しないとできない問題）です。</p>
<style>table{font-size:.85em;}dl.inline dd{margin-left:2em;}</style>
<h2>【厳選問題 1 】<br />
誤差の名称を具体例に対応付けて覚えよう！</h2>
<div class="card-panel mag_h30">
問 2　(平成 22 年度 秋期)</p>
<p>けた落ちの説明として，適切なものはどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>値がほぼ等しい浮動小数点数同士の減算において，有効けた数が大幅に減ってしまうことである。 </dd>
<dt>イ</dt>
<dd>演算結果が，扱える数値の最大値を超えることによって生じる誤差のことである。 </dd>
<dt>ウ</dt>
<dd>数表現のけた数に限度があるとき，最小のけたより小さい部分について四捨五入，切上げ又は切捨てを行うことによって生じる誤差のことである。  </dd>
<dt>エ</dt>
<dd>浮動小数点数の加算において，一方の数値の下位のけたが結果に反映されないことである。 </dd>
</dl>
</div>
<div class="chip">解説</div>
<p>コンピュータの計算において生じる誤差には、</p>
<p>「丸め誤差」<br />
「桁あふれ」<br />
「情報落ち」<br />
「桁落ち」</p>
<p>などの種類があります。 それぞれを、具体例を示して説明しますので、誤差の名称と対応付けて覚えてください。</p>
<p>コンピュータの内部では、2 進数が使われていますが、わかりやすいように、10 進数で具体例を示します。</p>
<div class="background c-round">
<h3 class="indigo-text mag_tp00">丸め誤差</h3>
<p>コンピュータは、有限な機械なので、無限に続く数を表現できません。</p>
<p>たとえば、2 ÷ 3 ＝ 0.66666・・・・ と無限に続く数は、途中で打ち切られて 0.666666667 となり、正確な値とは異なった値になります。</p>
<p>これが、丸め誤差です。 打ち切られた値は、四捨五入、切り上げ、切り捨てのいずれかを行った値になります。 0.666666667 は、四捨五入されています。
</p></div>
<div class="background c-round">
<h3 class="indigo-text mag_tp00">桁あふれ</h3>
<p>コンピュータは、CPU の内部にあるレジスタを使って計算を行います。 レジスタのサイズは、固定的であり有限です。</p>
<p>たとえば、32 ビット CPU なら、レジスタのサイズは 32 ビットであり、10 進数で 2147483647 ～ &#8211; 2147483648（約 21 億～約 &#8211; 21 憶）の数を取り扱えます。</p>
<p>この CPU を使って、20 億と 10 億を加算するとどうなるでしょう。</p>
<p>結果の 30 億 が、取り扱える数の範囲を超えてしまい、つまり桁があふれてしまい、正しい結果が得られません。 これが、桁あふれです。
</p></div>
<div class="background c-round">
<h3 class="indigo-text mag_tp00">情報落ち</h3>
<p>これは、浮動小数点数で、極端に大きな数と小さな数を加減算したときに生じます。</p>
<p>たとえば、1.23 × 10<sup>100</sup> ＋ 4.56 × 10 <sup>-100</sup> という加算を行うとしましょう。</p>
<p>大きな値の指数に揃えて、<br />
1.23 × 10<sup>100</sup> ＋ 0.000 ・・・ 000456 × 10<sup>100</sup><br />
という計算を行うことになります。</p>
<p>456 の前には、0 が 200 個ありますが、こんなに多くの桁を取り扱うことはできないので、途中で打ち切られ、<br />
1.23 × 10<sup>100</sup> ＋ 0.000 ・・・ 0 × 10<sup>100</sup><br />
という計算、つまり 1.23 × 10<sup>100</sup> ＋ 0 というゼロを足す計算を行うことになってしまいます。</p>
<p>456 という情報が消えてしまいました。 これが、情報落ちです。
</p></div>
<div class="background c-round">
<h3 class="indigo-text mag_tp00">桁落ち</h3>
<p>これは、浮動小数点数で、値が近い2つの数を減算したときに生じます。</p>
<p>桁落ちの原因は、浮動小数点数で正規化が行われることにあります。 ここでは、小数点以下第 1 桁が 0 でないように正規化するとします。</p>
<p>たとえば、0.00123 なら、0.123 × 10<sup>-2</sup> に正規化します。</p>
<p>桁落ちの例として、値が近い 0.12345 と 0.12344 を減算するとしましょう。</p>
<p>現在する前の有効桁は、どちらも小数点以下 5 桁です。</p>
<p>0.12345 &#8211; 0.12344 ＝ 0.00001 ですが、正規化によって 0.00001 ＝ 0.1 × 10<sup>-4</sup> になり、有効桁が小数点以下 1 桁に減ります。 これが、桁落ちです。
</div>
<p>誤差の具体例を見て、誤差の名称と意味がわかりましたね。 それでは、問題を見てみましょう。</p>
<p>桁落ちの説明を選ぶものなので、「値がほぼ等しい浮動小数点数同士の減算において、有効桁数が大幅に減ってしまう」という選択肢アが正解です。</p>
<p>選択肢イ、ウ、エは、それぞれ、桁あふれ、丸め誤差、情報落ちの説明です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　ア</p>
<h2>【厳選問題 2 】<br />
確率の乗法定理と加法定理の使い方を覚えよう！</h2>
<div class="card-panel mag_h30">
問 3　(平成 22 年度 秋期)</p>
<p>表は，ある地方の天気の移り変わりを示したものである。 例えば，晴れの翌日の天気は，40 % の確率で晴れ，40 % の確率で曇り，20 % の確率で雨であることを表している。 天気の移り変わりが単純マルコフ過程であると考えたとき，雨の 2 日後が晴れである確率は何 % か。</p>
<table class="bordered centered responsive-width">
<caption class="right-align">単位 %</caption>
<thead>
<tr>
<th></th>
<th>翌日晴れ</th>
<th>翌日曇り</th>
<th>翌日雨</th>
<tr>
</thead>
<tbody>
<tr>
<td>晴れ</td>
<td>40</td>
<td>40</td>
<td>20</td>
</tr>
<tr>
<td>曇り</td>
<td>30</td>
<td>40</td>
<td>30</td>
</tr>
<tr>
<td>雨</td>
<td>30</td>
<td>50</td>
<td>20</td>
</tr>
</tbody>
</table>
<p>ア　15　　イ　27　　ウ　30　　エ　33
</p></div>
<div class="chip">解説</div>
<p>基本情報技術者試験には、確率の問題がよく出題されます。 中学で習ったと思いますが、確率には「乗法定理」と「加法定理」があります。</p>
<p>2 つの事象が連続して起きる確率は、それぞれの確率を掛けて求められます。 これが、乗法定理です。<br />
2 つの事象のいずれかが起きる確率は、それぞれの確率を足して求められます。 これが、加法定理です。</p>
<p>この問題では、確率の乗法定理と加法定理を使います。</p>
<p>&nbsp;</p>
<p>たとえば、サイコロを 2 回振って、1 回目に 1 が出て、2 回目に 6 が出る確率は、<br />
1 回目に 1 が出る確率の 1/6 と、<br />
2 回目に 6 が出る確率の 1/6 を掛けて、<br />
1/6 × 1/6 ＝ 1/36 です。</p>
<p>サイコロを 1 回振って 1 と 6 のいずれかが出る確率は、<br />
1 が出る確率の 1/6 と、<br />
6 が出る確率の 1/6 を足して、<br />
1/6 ＋ 1/6 ＝ 2/6 ＝ 1/3 です。</p>
<p>いかがでしょう。 確率の乗法定理と加法定理を、思い出していただけましたか？</p>
<p>&nbsp;</p>
<p>それでは、問題を解いてみましょう。 ここでは、雨の 2 日後が晴れである確率を求めます。</p>
<p>これには、以下の 3 つのパターンがあります。</p>
<ol class="background c-round">
<li>雨 → 晴れ → 晴れ</li>
<li>雨 → 曇り → 晴れ</li>
<li>雨 → 雨 → 晴れ</li>
</ol>
<p>それぞれのパターンの確率は、連続して起きる確率なので、確率の乗法定理で求められます。 以下のようになります。</p>
<ol class="background c-round">
<li>0.3 × 0.4 ＝ 0.12</li>
<li>0.5 × 0.3 ＝ 0.15</li>
<li>0.2 × 0.3 ＝ 0.06</li>
</ol>
<p>雨の 2 日後が晴れである確率は、これら 3 つのパターンのいずれかが起きる確率なので、確率の加法定理で求めることができ、以下のように 33 % になります。</p>
<div class="background c-round">
0.12 ＋ 0.15 ＋ 0.06 ＝ 0.33（ 33 % ）
</div>
<p>したがって、選択肢エが正解です。</p>
<p>問題文の中にある「単純マルコフ過程」とは、1 つ前の状態だけから次に起こる事象が決まる、という意味なのですが、ここでは気にする必要はありません。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　エ</p>
<h2>【厳選問題 3 】<br />
磁気ディスク装置のデータ読み取り時間の計算方法のポイントを知ろう！</h2>
<div class="card-panel mag_h30">
問 14　(平成 22 年度 秋期)</p>
<p>表に示す仕様の磁気ディスク装置において，1,000 バイトのデータの読取りに要する平均時間は何ミリ秒か。 ここで，コントローラの処理時間は平均シーク時間に含まれるものとする。</p>
<table class="bordered responsive-width">
<tr>
<th>回転数</th>
<td>6,000 回転/分</td>
</tr>
<tr>
<th>平均シーク時間</th>
<td>10 ミリ秒</td>
</tr>
<tr>
<th>転送速度</th>
<td>10 M パイト / 秒</td>
</tr>
</table>
<p>ア　15.1　　イ　16.0　　ウ　20.1　　工　21.0
</p></div>
<div class="chip">解説</div>
<p>基本情報技術者試験に出題される計算問題の多くは、<span class="bold">実務で使われる有用な計算ではなく「仕組みがわかっていれば計算できるよね？」</span>という趣旨ものです。</p>
<p>この問題は、「磁気ディスク装置がデータを読み書きする仕組みを知っているよね？」という問題です。</p>
<dl class="background c-round">
<dt class="bold">磁気ディスク装置</dt>
<dd>データを記憶した <span class="bold">ディスク</span> と、データを読み書きする <span class="bold">ヘッド</span> から構成されています。 </dd>
<dd>ディスクの上には、 <span class="bold">トラック</span> と呼ばれる記憶領域が並んでいます。 </dd>
<dt class="bold">平均シーク時間</dt>
<dd>ヘッドの下をデータが通過すると、データを読み書きできますが、その前に、ヘッドを、目的のデータがあるトラックの上に移動する時間が必要です。 </dd>
<dt class="bold">平均回転待ち時間</dt>
<dd>さらに、データの先頭がヘッドの真下に来るまで待つ時間も必要になります。 </dd>
</dl>
<p>ここまでを知っていれば、問題を解くことができます。</p>
<p>&nbsp;</p>
<p>平均シーク時間は、問題に示されていて 10 ミリ秒です。<br />
平均回転待ち時間は、ディスクが半回転する時間です。</p>
<p>回転待ち時間は、最も運が良ければ 0 で、最も運が悪ければディスク 1 回転分なので、平均すると半回転分になるのです。</p>
<p>ディスクの回転数が 6000 回転 / 分ですから、<br />
1 回転は 60 秒 ÷ 6000 ＝ 10 ミリ秒であり、<br />
半回転は 10 ミリ秒 ÷ 2 ＝ 5 ミリ秒です。</p>
<p>&nbsp;</p>
<p>平均シーク時間の 10 ミリ秒と、平均回転待ち時間の 5 ミリ秒を足した 15 ミリ秒が、データを読み書きする前に必要な時間です。</p>
<p>これに、データを読み書きする時間を足せば、答えを得られます。</p>
<p>ここでは、1000 バイトのデータを、10 M バイト / 秒で読み取るので、1000 ÷ 10 M ＝ 0.1 ミリ秒の時間がかかります。</p>
<p>したがって、15 ＋ 0.1 ＝ 15.1 ミリ秒の選択肢アが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　ア</p>
<p>&nbsp;</p>
<p><i class="material-icons teal-text text-lighten-2">label</i> 関連タグ: <a href="../../tag/ディスク" class="chip teal white-text">ディスク</a></p>
<h2>【厳選問題 4 】<br />
英語の意味と対応付けて、リーダ、チャレンジャ、フォロワ、ニッチャの戦略を区別しよう！</h2>
<div class="card-panel mag_h30">
問 67　(平成 22 年度 秋期)</p>
<p>競争上のポジションで， フォロワの基本戦略はどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>シェア追撃などのリーダ攻撃に必要な差別化戦略</dd>
<dt>イ</dt>
<dd>市場チャンスに素早く対応する模倣戦略</dd>
<dt>ウ</dt>
<dd>製品，市場の専門特化を図る特定化戦略</dd>
<dt>エ</dt>
<dd>全市場をカバーし，最大シェアを確保する全方位戦略</dd>
</dl>
</div>
<div class="chip">解説</div>
<p>同じ市場で競い合う複数の企業がある場合、それぞれの企業は、「リーダ」「チャレンジャ」「フォロワ」「ニッチャ」に分類でき、それぞれに合った戦略を取ります。</p>
<p>どのような戦略なのかは、それぞれの英語の意味からわかるでしょう。</p>
<dl class="background c-round">
<dt class="bold">リーダ</dt>
<dd>市場占有率が最大の企業ですから、選択肢エの「全市場をカバーし、最大シェアを確保する全方位戦略」が適切です。 </dd>
<dt class="bold">チャレンジャ</dt>
<dd>リーダに挑戦する企業ですから、選択肢アの「シェア追撃などのリーダ攻撃に必要な差別化戦略」が適切です。 </dd>
<dt class="bold">フォロワ</dt>
<dd>業績をあげている企業におとなしく付いていく（フォローする）企業ですから、選択肢イの「市場チャンスに素早く対応する模倣戦略」が適切です。 </dd>
<dt class="bold">ニッチャ</dt>
<dd>他の企業が手を出さない隙間（ニッチ）で業績を上げるので、選択肢ウの「製品、市場の専門特化を図る特定化戦略」が適切です。 </dd>
</dl>
<p>ここでは、フォロワの戦略を選ぶので、選択肢イが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　イ</p>
<h2>【厳選問題 5 】<br />
日本語の意味どおりに、導入期、成長期、成熟期、衰退期の戦略を判断しよう！</h2>
<div class="card-panel mag_h30">
問 68　(平成 22 年度 秋期)</p>
<p>プロダクトライフサイクルにおける成長期の特徴はどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>市場が商品の価値を理解し始める。 商品ラインもチャネルも拡大しなければならない。 この時期は売上も伸びるが，投資も必要である。 </dd>
<dt>イ</dt>
<dd>需要が大きくなり，製品の差別化や市場の細分化が明確になってくる。 競争者間の競争も激化し，新品種の追加やコストダウンが重要となる。  </dd>
<dt>ウ</dt>
<dd>需要が減ってきて，撤退する企業も出てくる。 この時期の強者になれるかどうかを判断し，代替市場への進出なども考える。 </dd>
<dt>エ</dt>
<dd>需要は部分的で，新規需要開拓が勝負である。 特定ターゲットに対する信念に満ちた説得が必要である。 </dd>
</div>
<div class="chip">解説</div>
<p>製品を市場に投入してから撤退するまでを「プロダクトライフサイクル」と呼び、その中には「導入期」「成長期」「成熟期」「衰退期」があります。</p>
<p>それぞれの意味は、日本語の意味から判断できます。 それぞれの選択肢が、どの期に該当するか考えてみましょう。</p>
<p>基本情報技術者試験には、ヒッカケ問題が出ないので、素直に常識的な判断をすればOKです。</p>
<dl class="background c-round">
<dt>選択肢ア</dt>
<dd>市場が商品の価値を理解し始め、売上も「伸びる」のですから「成長期」です。 </dd>
<dt>選択肢イ</dt>
<dd>需要が大きくなり、競争が激化するのですから、「導入期」「成長期」「成熟期」「衰退期」の中では、「成熟期」が適切です。 </dd>
<dt>選択肢ウ</dt>
<dd>需要が減り、代替市場への進出を考えるのですから、「衰退期」です。 </dd>
<dt>選択肢エ</dt>
<dd>新規需要開拓のために、特定ターゲットに信念に満ちた説得をするので、「導入期」です。 </dd>
</dl>
<p>以上のことから、選択肢アが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　ア</p>
<div class="divider mag_tp60 mag_bt30"></div>
<p>記事をお読みいただきありがとうございます。</p>
<p>もしも、一度解いただけでは、よくわからない問題があったなら、わかるまで何度でも練習してください。 <span class="bold">「やるべき問題」は「わかるまでやるべき問題」</span>だからです。</p>
<p>この厳選問題大全集が、受験者の皆様のお役に立てば幸いです。</p>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h22_autumn/">「厳選5題」過去問と解説 | 平成22年度 秋期 の過去問やるならこれをやれ</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
	</channel>
</rss>
