<?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/%e8%ab%96%e7%90%86%e5%9b%9e%e8%b7%af/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi</link>
	<description>基本情報技術者試験を学習する人のためにつくられた専門メディア。250本以上の記事を掲載し、勉強方法や各分野のポイント、過去問解説など、試験に役立つ情報を発信。試験対策書籍を執筆する著者が、はじめて学ぶ人でもわかりやすく解説します。（2023年度からの新制度に対応済み）</description>
	<lastBuildDate>Mon, 20 Apr 2026 07:08:52 +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年6月12日実施</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/guide/report_fe_special_test_202206/</link>
		<pubDate>Mon, 13 Jun 2022 01:29:56 +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=guide&#038;p=6586</guid>
		<description><![CDATA[<p>試験対策講座の講師として、誠に勝手ながら、 2022 年 6 月 12 日（日）に実施された基本情報技術者午前免除試験（修了認定に係る試験）の講評をさせていただきます。 今回受験された人は振り返りの題材として、今後受験さ [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/guide/report_fe_special_test_202206/">基本情報技術者試験 午前免除（修了試験）の講評 ～ 2022年6月12日実施</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 年 6 月 12 日（日）に実施された基本情報技術者午前免除試験（修了認定に係る試験）の講評をさせていただきます。</p>
<p>今回受験された人は振り返りの題材として、今後受験される人は対策の資料として、参考にしていただければ幸いです。</p>
<table class="mag_h30 centered responsive-width">
<thead>
<tr>
<th>実施月</th>
<th>問題</th>
<th>解答</th>
</tr>
</thead>
<tbody>
<tr>
<td>2022 年 6 月</td>
<td><a href="https://www.ipa.go.jp/shiken/about/ug65p90000001bq0-att/tokurei_Mondai_20220612_FE.pdf" rel="noopener" target="_blank">問題</a></td>
<td><a href="https://www.ipa.go.jp/shiken/about/ug65p90000001bq0-att/tokurei_ans_20220612_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;}caption{text-align:center;}figcaption{font-size:.85em;}@media screen and (max-width:600px){.responsive-width{width:100%}.half-on-small{width:50%}}</style>
<h2>他の試験の過去問題がとても多かった</h2>
<p>今回の試験の内容も、前回（ 2022 年 1 月 23 日）と前々回（ 2021 年 12 月 12 日）に実施された試験と同様に、<span class="u">基本情報技術者試験以外の過去問題が数多く出題</span>されていました。 図 1 に、今回の試験のテクノロジ系の問題（問 1 ～問 50 ）の中で、他の試験区分の過去問題だったものを示します。 マネジメント系とストラテジ系の問題にも、他の試験区分の過去問題が数多くありました。</p>
<figure class="responsive-width">
<table class="striped">
<caption>図 1 　今回の試験のテクノロジ系の問題の中で他の試験区分の過去問題だったもの</caption>
<thead>
<tr>
<th>問番号</th>
<th>テーマ</th>
<th>出典</th>
</tr>
</thead>
<tbody>
<tr>
<td>問 1</td>
<td>ブール演算の相補演算</td>
<td>応用情報 H 24 春 問 1</td>
</tr>
<tr>
<td>問 10</td>
<td>二つの流れ図で結果の値を等しくする</td>
<td>応用情報 H 22 秋 問 7</td>
</tr>
<tr>
<td>問 15</td>
<td>ジョブの多重度とターンアラウンドタイム</td>
<td>応用情報 H 23 秋 問 17</td>
</tr>
<tr>
<td>問 19</td>
<td>Hadoop の説明</td>
<td>応用情報 H 29 秋 問 19</td>
</tr>
<tr>
<td>問 23</td>
<td>最も適切な顧客購入分析表</td>
<td>応用情報 H 21 春 問 27</td>
</tr>
<tr>
<td>問 24</td>
<td>XML 形式で記述した画像フォーマット</td>
<td>応用情報 H 24 秋 問 34</td>
</tr>
<tr>
<td>問 34</td>
<td>電子メールの送受信に使用するプロトコル</td>
<td>セキマネ H31 春 問 46</td>
</tr>
<tr>
<td>問 38</td>
<td>メッセージの改ざんを確認する</td>
<td>セキマネ H30 春 問 24</td>
</tr>
<tr>
<td>問 41</td>
<td>Web アプリケーションのセキュリティ上の脅威と対策</td>
<td>応用情報 H 24 春 問 43</td>
</tr>
<tr>
<td>問 42</td>
<td>Web システムのセッションの乗っ取り</td>
<td>応用情報 H 30 春 問 43</td>
</tr>
<tr>
<td>問 44</td>
<td>IC カードの耐タンパ性</td>
<td>応用情報 H 29 秋 問 44</td>
</tr>
<tr>
<td>問 48</td>
<td>エラー埋込み法による残存エラーの予測</td>
<td>応用情報 H 25 春 問 47</td>
</tr>
</tbody>
</table><figcaption class="left-align">
<i class="material-icons light-blue-text">info</i> 応用情報技術者試験を「応用情報」、情報セキュリティマネジメント試験を「セキマネ」と表記しています。<br />
<i class="material-icons light-blue-text">info</i> 出典に示した年度以外でも、同じ問題が出題されている場合があります。<br />
</figcaption></figure>
<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 (B) 、問 3 (B) 、問 4 (B) </td>
</tr>
<tr>
<td>アルゴリズム</td>
<td>問 5 (C) 、問 7 (C) 、問 8 (B) 、問 9 (B) 、問 10 (B) </td>
</tr>
<tr>
<td>ハードウェア</td>
<td>問 13 (B) 、問 14 (B) 、問 20 (B) 、問 21 (A) 、問 22 (B) </td>
</tr>
<tr>
<td>ソフトウェア</td>
<td>問 6 (A) 、問 12 (B) 、問 18 (B) 、問 19 (B) </td>
</tr>
<tr>
<td>システム構成</td>
<td>問 11 (B) 、問 15 (C) 、問 16 (A) 、問 17 (B) </td>
</tr>
<tr>
<td>マルチメディアとヒューマンインタフェース</td>
<td>問 23 (B) 、問 24 (B) </td>
</tr>
<tr>
<td>データベース</td>
<td>問 25 (A) 、問 26 (A) 、問 27 (A) 、問 28 (A) 、問 29 (B) </td>
</tr>
<tr>
<td>ネットワーク</td>
<td>問 30 (B) 、問 31 (B) 、問 32 (A) 、問 33 (B) 、問 34 (B) </td>
</tr>
<tr>
<td>セキュリティ</td>
<td>問 35 (A) 、問 36 (A) 、問 37 (B) 、問 38 (B) 、問 39 (A) 、問 40 (A) 、問 41 (B) 、問 42 (B) 、問 43 (C) 、問 44 (A) </td>
</tr>
<tr>
<td>開発技術</td>
<td>問 45 (A) 、問 46 (A) 、問 47 (B) 、問 48 (B) 、問 49 (B) 、問 50 (A) </td>
</tr>
<tr>
<td>マネジメント系</td>
<td>問 51 (A) 、問 52 (B) 、問 53 (C) 、問 54 (B) 、問 55 (A) 、問 56 (C) 、問 57 (A) 、問 58 (A) 、問 59 (A) 、問 60 (A) </td>
</tr>
<tr>
<td>ストラテジ系</td>
<td>問 61 (B) 、問 62 (B) 、問 63 (A) 、問 64 (A) 、問 65 (B) 、問 66 (A) 、問 67 (A) 、問 68 (B) 、問 69 (A) 、問 70 (B) 、問 71 (B) 、問 72 (A) 、問 73 (B) 、問 74 (B) 、問 75 (A) 、問 76 (A) 、問 77 (B) 、問 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 が 32 問、<br />
B が 42 問、<br />
C が 6 問</p>
<p>です。</p>
<p>A が 90 % できて、 B が 50 % できて、 C が 25 % できる（四択問題なので最低でも 25 % できます）とすれば、 1 問が 1.25 点なので、得点の期待値は、</p>
<p>1.25 点 × ( 32 × 0.9 ＋ 42 × 0.5 ＋ 6 × 0.25 )<br />
≒ 64.13 点</p>
<p>です。</p>
<p>図 3 に、近年に実施された午前免除試験の得点の期待値を示します。</p>
<p>今回の試験は、他の試験区分の過去問題が多くて難しく感じたかもしれませんが、<span class="u">全体の難易度は、これまでの試験と同様</span>でした。</p>
<table class="responsive-width centered">
<caption>図 3 　近年の試験の得点の期待値</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 />12 月 12 日（日）</td>
<td>29 問</td>
<td>40 問</td>
<td>11 問</td>
<td>61.10 点</td>
</tr>
<tr>
<td>2022 年<br />1 月 23 日（日）</td>
<td>27 問</td>
<td>47 問</td>
<td>6 問</td>
<td>63.50 点</td>
</tr>
<tr>
<td>2022 年<br />6 月 12 日（日）</td>
<td>32 問</td>
<td>42 問</td>
<td>6 問</td>
<td>64.13 点</td>
</tr>
</tbody>
</table>
<h2>他の試験区分の問題であっても正解できる</h2>
<p>今後の午前免除試験でも他の試験区分の問題に遭遇すると思いますが、そのときには、<span class="u">どうぞ焦らないでください</span>。 他の試験区分の問題であっても、基本情報技術者試験の出題範囲を超えた問題は出ないはずです。</p>
<p>したがって、基本情報技術者試験の過去問題を数多く学習して、出題範囲の知識を十分に習得しておけば、正解できるはずです。 「ちゃんと学習してきたのだから、自分の知識の範囲で正解できはずだ！」という自信を持って取り組んでください。</p>
<p>&nbsp;</p>
<p>例を示しましょう。</p>
<p>以下は、今回の試験の問 1 です。応用情報技術者試験の過去問題であり、テーマは「ブール演算の相補演算」です。 この問題を見て「相補演算なんて聞いたことがない！」と言いたくなると思いますが、基本情報技術者試験の過去問題を数多く学習していれば、その知識の範囲で正解できます。</p>
<div class="card-panel mag_h30">
問 1</p>
<p>任意のオペランドに対するブール演算 A の結果とブール演算 B の結果が互いに否定の関係にあるとき， A は B の(又は， B は A の)相補演算であるという。排他的論理和の相補演算はどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>等価演算 <img src="../../wp-content/uploads/2022/06/equal.jpg" class="half-on-small" loading="lazy" style="vertical-align:middle;"></dd>
<dt>イ</dt>
<dd>否定論理和 <img src="../../wp-content/uploads/2022/06/nor.jpg" class="half-on-small" loading="lazy" style="vertical-align:middle;"></dd>
<dt>ウ</dt>
<dd>論理積 <img src="../../wp-content/uploads/2022/06/and.jpg" class="half-on-small" loading="lazy" style="vertical-align:middle;"></dd>
<dt>エ</dt>
<dd>論理和 <img src="../../wp-content/uploads/2022/06/or.jpg" class="half-on-small" loading="lazy" style="vertical-align:middle;"></dd>
</dl>
</div>
<p>問題文の中に、<span class="u">相補演算の説明があることに注目</span>してください。 「相補演算なんて聞いたことがない！」であっても、この説明を読めば「相補演算とは、互いに否定の関係にあるブール演算（論理演算）」のことだとわかります。</p>
<p>ここでは、排他的論理和（ XOR 演算）の相補演算を求めます。 ヒントとして、選択肢にベン図が示されているので、排他的論理和のベン図を描いてから、それを否定したベン図（塗りつぶす部分を逆にしたベン図）を描いてみましょう。 これらは、基本情報技術者試験の知識の範囲です。以下のようになります。</p>
<figure>
<img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2022/06/xor.jpg" loading="lazy"><figcaption class="center">排他的論理和のベン図</figcaption></figure>
<figure>
<img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2022/06/nxor.jpg" loading="lazy"><figcaption class="center">排他的論理和を否定したベン図</figcaption></figure>
<p>排他的論理和を否定したベン図は、選択肢アの等価演算と同じになったので、選択肢アが正解です。</p>
<p><span class="chip">解答</span> ア</p>
<div class="divider mag_tp50 mag_bt30"></div>
<p>以上、試験対策講座の講師として、誠に勝手ながら、試験問題の講評をさせていただきました。</p>
<p>私の講座では、試験に合格する秘訣として、受験者に 2 つのことをアドバイスしています。それは、「合格したいという強い意志を持つこと」と「試験当日までコツコツと学習を続けること」です。</p>
<p>強い意志を持ってコツコツと学習を続ければ、必ず良い結果が得られます。 皆様のご健闘をお祈り申し上げます！</p>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/guide/report_fe_special_test_202206/">基本情報技術者試験 午前免除（修了試験）の講評 ～ 2022年6月12日実施</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/digital_logic/</link>
		<pubDate>Mon, 16 Nov 2020 08:38:05 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[2進数]]></category>
		<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=4877</guid>
		<description><![CDATA[<p>この連載では、基本情報技術者試験によく出題されるテクノロジー関連の用語を、午前問題と午後問題のセットを使って解説します。 午前問題で用語の意味や概念を知り、午後問題で技術の活用方法を知ってください。それによって、単なる丸 [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/mastering_tech/digital_logic/">基本情報でわかる 論理演算 「真理値表を書けば、半加算器と全加算器の仕組みがわかる」</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> と <span class="bold">全加算器</span> です。</p>
<style>dl.inline dd{margin-left:2em;}</style>
<h2>論理演算で加算を実現する 半加算器 とは？ 全加算器 とは？</h2>
<p>コンピュータの内部では、 0 と 1 だけの 2 進数でデータが表現され、 AND, OR, NOT, XOR などの論理演算でデータが処理されています。コンピュータの外部からは、加減乗除の四則演算を行っているように見えても、内部では論理演算が行われているのです。</p>
<p>試験には、論理演算を使って加算を実現する <span class="bold">加算器</span> に関する問題が出ます。<span class="u">減算、乗算、除算の問題が出ないのは、加算ができれば、他の演算ができるから</span>です。</p>
<ul class="background c-round mag_h30">
<li>マイナスの数を加算すれば、減算になります</li>
<li>プログラムを作って加算を繰り返せば、乗算になります</li>
<li>プログラムを作って減算を繰り返し、引けた回数をカウントすれば、除算になります</li>
</ul>
<p>加算器には、<span class="bold">半加算器（ half adder ）</span>と <span class="bold">全加算器（ full adder ）</span>があります。</p>
<p>半加算器は、 1 桁の 2 進数を <span class="u">2 つ</span>加算します。<br />
全加算器は、 1 桁の 2 進数を <span class="u">3 つ</span>加算します。</p>
<p>たとえば、 0101 と 0011 という 4 ビットの 2 進数を加算するとしましょう。</p>
<p>最下位ビットの加算では、その桁にある 2 つの数を加算するので、半加算器を使います。<br />
それ以外の桁では、その桁にある 2 つの数と、下位桁からの桁上がりの数を加算するので、全加算器を使います。</p>
<p>したがって、 4 ビットの加算では、半加算器を 1 つと、全加算器を 3 つ使うことになります。</p>
<figure class="mag_h30"><figcaption>図　4 ビットの加算の例</figcaption><img class="materialboxed z-depth-5 responsive-width" data-caption="図　4 ビットの加算の例" src="../../wp-content/uploads/2020/11/4bit_adder.png" loading="lazy"><br />
</figure>
<h2>半加算器の仕組み</h2>
<p>加算器の仕組みを説明しましょう。</p>
<p>まず、 1 桁の 2 進数を 2 つ加算する半加算器です。この加算のパターンには、以下に示した 4 通りがあります。</p>
<p>1 ＋ 1 の結果が 1 0 の 2 桁になるので、他の結果も上位桁に 0 を置いて 2 桁に統一しています。「これらの結果を見て、論理演算で加算を実現する方法を見出してください」と言われても、すぐにはピンと来ないでしょう。</p>
<figure class="mag_h30"><figcaption>図　1 桁の 2 進数を 2 つ加算するパターン</figcaption><img class="materialboxed z-depth-5 responsive-width" data-caption="図　1 桁の 2 進数を 2 つ加算するパターン" src="../../wp-content/uploads/2020/11/truth_pattern.png" loading="lazy"><br />
</figure>
<p>データに名前を付けて、真理値表を書いてみましょう。ここでは、加算する数を X および Y として、結果を C および S とします。</p>
<table class="centered mag_h30">
<caption class="grey-text mag_h10">図　1 桁の 2 進数を 2 つ加算する真理値表</caption>
<thead>
<tr class="grey lighten-4">
<th>X</th>
<th>Y</th>
<th>C</th>
<th>S</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>C は、 Carry （桁上がり）という意味で、 S は、 Sum （和）という意味です。この真理値表を見て、 X と Y にどのような論理演算を行うと、 C と S が得られるかを考えてください。</p>
<p>しばらく真理値表を見ていると「あっ、そうか！」と気付くはずです。</p>
<ul class="background c-round mag_h30">
<li>C は、 X と Y の両方が 1 のときだけ 1 になります。これは、 X と Y の AND 演算です</li>
<li>S は、 X と Y のどちらか一方だけが 1 のときだけ 1 になります。これは、 X と Y の XOR 演算です</li>
</ul>
<figure class="mag_h30" style="position: relative;">
<table class="centered">
<caption class="grey-text mag_h10">図　1 桁の 2 進数を 2 つ加算する真理値表</caption>
<thead>
<tr class="grey lighten-4">
<th>X</th>
<th>Y</th>
<th>C</th>
<th>S</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
<p><span class="red-text hide-on-small-only" style="position:absolute;top:3em;left:81.5%;border:dotted .2em #f44336;padding:20em .6em 1em">XOR 演算</span><span class="light-blue-text hide-on-small-only" style="position:absolute;top:3em;left:56.5%;border:dotted .2em #03a9f4;padding:20em .6em 1em">AND 演算</span><span class="red-text hide-on-med-and-up" style="position:absolute;top:4em;left:75%;border:dotted .2em #f44336;padding:20em .6em 1em">XOR 演算</span><span class="light-blue-text hide-on-med-and-up" style="position:absolute;top:4em;left:50%;border:dotted .2em #03a9f4;padding:20em .6em 1em">AND 演<br />算</span><br />
</figure>
<p>以下は、半加算器の仕組みを示したものです。</p>
<p>図の左側から入力された X と Y の加算結果が、図の右側の S と C から出力されます。</p>
<figure class="mag_h30"><figcaption>図　半加算器の仕組み</figcaption><img class="materialboxed z-depth-5 responsive-width" data-caption="図　半加算器の仕組み" src="../../wp-content/uploads/2020/11/half_adder.png" loading="lazy"><br />
</figure>
<ul class="background blue-grey-text c-round">
<li>1 本の電線で、 1 桁の 2 進数が伝えられます</li>
<li>電線の交差に丸印がある部分は、つながっています</li>
<li>丸印がない部分は、立体交差であり、つながっていません</li>
</ul>
<p>これは、回路図を書くときの決まり事です。</p>
<h2>全加算器の仕組み</h2>
<p>次は、 1 桁の 2 進数を 3 つ加算する半加算器の仕組みです。これは、「そもそも、なぜ半加算器や全加算器と呼ぶのか？」がわかれば、すんなり理解できるでしょう。</p>
<p>半加算器で 1 桁の 2 進数を 2 つ加算できるのですから、<span class="u">半加算器が 2 つあれば、 1 桁の 2 進数を 3 つ加算できます。</span>つまり、半加算器を 2 つ使えば全加算器になるのです。逆に言えば、全加算器を半分にすれば、半加算器になります。だから「全」と「半」なのです。</p>
<p>&nbsp;</p>
<p>以下は、全加算器の仕組みを示したものです。</p>
<p>図の左側から入力された X と Y と C´（ C´ は、下位桁からの桁上がりを意味します）の加算結果が、図の右側の S と C から出力されます。 </p>
<figure class="mag_h30"><figcaption>図　全加算器の仕組み</figcaption><img class="materialboxed z-depth-5 responsive-width" data-caption="図　全加算器の仕組み" src="../../wp-content/uploads/2020/11/full_adder.png" loading="lazy"><br />
</figure>
<p>X と Y を半加算器 (1) で加算し、<br />
その結果の S と C´ を半加算器 (2) で加算し、<br />
その結果の S が、全加算器の S になります。</p>
<p>全加算器の C は、<br />
半加算器 (1) の C と<br />
半加算器 (2) の C を<br />
OR 演算して得られます。</p>
<p>なぜなら、半加算器 (1) <span class="u">または</span>半加算器 (2) のいずれかで桁上がりがあれば、それが全加算器の桁上がりになるからです。「または」は OR 演算です。</p>
<h2>半加算器と全加算器に関する午前問題</h2>
<p>半加算器と全加算器の仕組みがわかったところで、午前問題を解いてみましょう。以下は、半加算器に関する午前問題です。</p>
<p>「 A 」の素子は、和を求めるので XOR 回路です。<br />
「 B 」の素子は、桁上がりを求めるので AND 回路です。</p>
<p>選択肢では、論理演算の名前を日本語で示しています。 XOR は「排他的論理和」であり、 AND は「論理積」なので、選択肢アが正解です。</p>
<div class="card-panel mag_h30">
問 22　平成 29 年度 春期 午前</p>
<p>図に示す， 1 桁の 2 進数 x と y を加算して， z ( 和の 1 桁目 ) 及び c ( 桁上げ )を出力する半加算器において， A と B の素子の組合せとして，適切なものはどれか。</p>
<p><img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2020/11/q22_half_adder.jpg" loading="lazy"></p>
<table class="centered responsive-width">
<thead>
<tr>
<th></th>
<th>A</th>
<th>B</th>
<tr>
</thead>
<tbody>
<tr>
<td>ア</td>
<td>排他的論理和</td>
<td>論理積</td>
</tr>
<tr>
<td>ィ</td>
<td>否定論理積</td>
<td>否定論理和</td>
</tr>
<tr>
<td>ウ</td>
<td>否定論理和</td>
<td>排他的論理和</td>
</tr>
<tr>
<td>エ</td>
<td>論理積</td>
<td>論理和</td>
</tr>
</tbody>
</table>
</div>
<p class="mag_tp20 mag_bt40"><span class="chip mag_rt05">解答</span>ア</p>
<p>以下は、全加算器に関する午前問題です。全加算器が、 1 桁の 2 進数を 3 つ加算するものであることを知っていれば、簡単に問題を解けるでしょう。</p>
<p>ここでは、 </p>
<div class="background c-round">
x に 1 ,<br />
y に 0 ,<br />
z（ z は、下位桁からの桁上がりだと思われます）に 1 を入力
</div>
<p>するので、 1 と 0 と 1 が加算されて、 10 という結果が得られます。</p>
<p>結果の C が 1 で、 S が 0 なので、選択肢ウが正解です。</p>
<div class="card-panel mag_h30">
問 25　(平成 21 年度 秋期)</p>
<p>図は全加算器を表す論理回路である。図中の x に 1 ， y に 0 ， z に 1 を入力したとき，出力となる c (けた上げ数) ，s (和) の値はどれか。</p>
<p><img class="materialboxed z-depth-5" style="margin: auto;"  src="../../wp-content/uploads/2020/11/q25_full_adder-300x143.jpg" alt="" loading="lazy" /></p>
<table class="centered responsive-width">
<thead>
<tr>
<th></th>
<th>c</th>
<th>s</th>
</tr>
</thead>
<tbody>
<tr>
<td>ア</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>イ</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>ウ</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>エ</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
<p class="mag_tp20 mag_bt40"><span class="chip mag_rt05">解答</span>ウ</p>
<h2>半加算器と全加算器に関するに関する午後問題</h2>
<p>今度は、午後問題を解いてみましょう。</p>
<p>以下の問題（問題の一部を抜粋しています）では、半加算器を 1 つと全加算器を 3 つ使った 4 ビットの加算器が示されています。</p>
<p>この加算器で、マイナスの数を加算するという内容です。つまり、加算器で減算を行うのです。</p>
<div class="card-panel mag_h30">
問 1　平成 21 年度 秋期 午後（一部抜粋）</p>
<p>半加算器と全加算器に関する次の記述を読んで，設問 1 ～ 3 に答えよ。</p>
<p>（設問 1 と設問 2 を省略します）</p>
<dl>
<dt>設問 3</dt>
<dd>　A, B 及び S を 2 の補数表現による 4 ビットの符号付 2 進整数とし，それぞれのビット表現を A<sub>4</sub>A<sub>3</sub>A<sub>2</sub>A<sub>1</sub>, B<sub>4</sub>B<sub>3</sub>B<sub>2</sub>B<sub>1</sub> 及び S<sub>4</sub>S<sub>3</sub>S<sub>2</sub>S<sub>1</sub>で表す (符号ビットは A<sub>4</sub>, B<sub>4</sub> 及び S<sub>4</sub> )。</dd>
<dd>　図 3は， A と B の加算を行い，結果を S に求める加算器であり，半加算器と全加算器で実現されている。ここで，C<sub>1</sub> C<sub>4</sub> は半加算器及び全加算器からのけた上がりを表す。</dd>
<dd>　この加算器に，A として-1 を，Bとして -2 (いずれも 10 進表記) を与えたとき，図 3 の C<sub>1</sub> 〜 C<sub>4</sub>の値として正しい組合せを，解答群の中から選べ。</dd>
</dl>
<figure><figcaption>図 3　 A と B を加算して S を求め加算器</figcaption><img class="materialboxed z-depth-5 responsive-width" data-caption="図 3　 A と B を加算して S を求め加算器"  src="../../wp-content/uploads/2020/11/q1_adder_fgure.jpg" alt="" loading="lazy" /><br />
</figure>
<p>解答群</p>
<table class="centered responsive-width">
<thead>
<tr>
<th></th>
<th>C<sub>1</sub></th>
<th>C<sub>2</sub></th>
<th>C<sub>3</sub></th>
<th>C<sub>4</sub></th>
</tr>
</thead>
<tbody>
<tr>
<td>ア</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>イ</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>ウ</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>エ</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>オ</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>カ</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>キ</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>ク</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
<p>4 ビットの 2 の補数表現を使うと、<br />
-1 は 1111 になり、<br />
-2 は 1110 になります。</p>
<p>これを 4 ビットの加算器の A<sub>4</sub>A<sub>3</sub>A<sub>2</sub>A<sub>1</sub> と B<sub>4</sub>B<sub>3</sub>B<sub>2</sub>B<sub>1</sub> に入力すると、 1 つの半加算器と 3 つの全加算器の和（ S<sub>1</sub> ～ S<sub>4</sub> ）と桁上がり（ C<sub>1</sub> ～ C<sub>4</sub> ）は、以下のようになります。</p>
<figure><figcaption>図　1111 と 1110 の加算結果</figcaption><img class="z-depth-5 materialboxed responsive-width" data-caption="図　1111 と 1110 の加算結果"  src="../../wp-content/uploads/2020/11/q1_explain.png" alt="" loading="lazy" /><br />
</figure>
<p>したがって、選択肢エが正解です。この加算器では、図の左側が下位桁であることに注意してください。</p>
<p>&nbsp;</p>
<p><span class="chip mag_rt05">解答</span>設問 3　エ</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/digital_logic/">基本情報でわかる 論理演算 「真理値表を書けば、半加算器と全加算器の仕組みがわかる」</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>2進数の知識が必要なプログラム｜アルゴリズムとプログラミング問題を解くコツ</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/patterns_algorithms/if_else/</link>
		<pubDate>Mon, 25 May 2020 06:27:15 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[2進数]]></category>
		<category><![CDATA[アルゴリズム]]></category>
		<category><![CDATA[科目 B]]></category>
		<category><![CDATA[論理回路]]></category>

		<guid isPermaLink="false">https://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=patterns_algorithms&#038;p=4092</guid>
		<description><![CDATA[<p>この連載では、基本情報技術者試験で、多くの受験者が苦手意識を持っている科目 B 試験 アルゴリズムとプログラミング分野の「アルゴリズム穴埋め問題」に的を絞って、正解を見出すポイントを詳しく説明します。 苦手を克服するには [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/patterns_algorithms/if_else/">2進数の知識が必要なプログラム｜アルゴリズムとプログラミング問題を解くコツ</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>この連載では、基本情報技術者試験で、多くの受験者が苦手意識を持っている科目 B 試験 アルゴリズムとプログラミング分野の「アルゴリズム穴埋め問題」に的を絞って、正解を見出すポイントを詳しく説明します。</p>
<p>苦手を克服するには、短いプログラムを何度も練習して、穴埋めに慣れることが重要です。</p>
<p>そのために、旧制度の午後試験のアルゴリズム過去問題の一部をアレンジした練習問題を作りました。 とても短い問題ですので、気軽に取り組んでください。</p>
<style>article,article pre{font-family:'consolas','Courier New',"HCo Gotham SSm",Gotham,"ヒラギノ角ゴ Pro W3","Hiragino Kaku Gothic ProN","Hiragino Sans","BIZ UDPGothic",Meiryo,sans-serif!important;}pre{background:#263238;color:#eceff1;font-size:1em;line-height:1.8;margin:1em -7.5%;padding:1em 7.5%}table{font-size:.85em;}.card-panel>pre{margin:1em -24px}.background p{color:#3f51b5}ul.options>li{list-style-type:none!important;counter-increment:kana;}ul.options>li::before{content:counter(kana, katakana);margin-right:1em;}dl.inline dd{margin-left:6em}@media only screen and (max-width:600px){.col.m6.on-mobile-float-none{float:none}}.table-container table{line-height:.5}ul.checkbox li{list-style-type:unset}ul.checkbox li::before{font-family:'Material Icons';content:"\e835";margin-right:.5em}</style>
<h2>練習問題</h2>
<div class="card-panel">
問 8  (平成 24 年度 春期 午後）を一部改変</p>
<p>関数 BitTest は、 8 ビットのデータ中の指定したビット位置の値を検査し、その結果を返す。 検査される 8 ビットのデータは引数 Data に、検査するビット位置は引数 Mask に、それぞれ格納される。 Mask 中のビットの値が 1 であるビット位置に対応した Data 中のビットを検査し、返却値として、検査した全てのビットが 0 なら 0 を、検査したビット中に 0 と 1 が混在しているなら 1 を、検査した全てのビットが 1 なら 2 を、それぞれ返す。</p>
<p class="grey-text hide-on-med-and-up mag_h10 small-text"><i class="material-icons light-blue-text mag_rt05">swipe</i>アルゴリズムや表は横スクロールできます</p>
<div class="row">
<div class="col m6 on-mobile-float-none grey lighten-5 c-round table-container">
    <span class="chip">例 1</span></p>
<table>
<tr>
<td>ビット番号</td>
<td> 7 6 5 4 3 2 1 0</td>
</tr>
<tr>
<td>Data</td>
<td> 0 1 0 1 0 1 0 1</td>
</tr>
<tr>
<td>Mask</td>
<td> 1 1 1 0 0 0 0 0</td>
</tr>
<tr>
<td>返却値</td>
<td> 1</td>
</tr>
</table></div>
<div class="col m6 on-mobile-float-none grey lighten-5 c-round table-container">
    <span class="chip">例 2</span></p>
<table>
<tr>
<td>ビット番号</td>
<td> 7 6 5 4 3 2 1 0</td>
</tr>
<tr>
<td>Data</td>
<td> 0 0 1 1 0 0 1 1</td>
</tr>
<tr>
<td>Mask</td>
<td> 0 0 0 1 0 0 0 1</td>
</tr>
<tr>
<td>返却値</td>
<td> 2</td>
</tr>
</table></div>
</div>
<p>プログラム中の<span class="blank">a</span><span class="blank">b</span>に入る正しい答えを、解答群の中から選べ。 なお、本問において、演算子 <code class="language-none">"&"</code> 、 <code class="language-none">"|"</code> は、AND および OR のビット演算を求めるもとのし、 <code class="language-none">"～"B</code> という表記は、 8 ビット論理型定数（ 8 ビットの 2 進数）を表す。 Mask 中には、 1 のビットが 1 個以上あるものとする。</p>
<p>［プログラム］</p>
<pre>◯整数型: BitTest( 8 ビット論理型: Data, 8 ビット論理型: Mask)
  整数型: RC		/* 返却値 */

  if ( <span class="blank">a</span> )
    RC ← 2		/* 返却値は 2 */
  elseif ( <span class="blank">b</span> )
    RC ← 0		/* 返却値は 0 */
  else
    RC ← 1		/* 返却値は 1 */
  endif

  return RC		/* RC を返却値として返す */</pre>
<p>a と b の解答群</p>
<ul class="options">
<li>Data と Mask の値がどちらも &#8220;00000000&#8221;B</li>
<li>Data と Mask の値がどちらも Data</li>
<li>Data と Mask の値がどちらも Mask</li>
<li>Data と Mask の値がどちらか &#8220;00000000&#8221;B</li>
<li>Data と Mask の値がどちらか Mask</li>
</ul>
</div>
<h2>ポイント1: 問題に示された具体例から問題の意味を理解する</h2>
<p>この問題は、問題文の説明を読んだだけでは、何をするプログラムかよくわからないでしょう。 どうやら出題者も、そう思ったようで、具体例を 2 つ示しています。</p>
<p>このような場合には、具体例を見れば、問題の意味を理解できるようになっているはずです。</p>
<div class="row mag_h30" style="position: relative;">
<span class="chip">例 1</span></p>
<dl class="inline">
<dt>ビット番号</dt>
<dd> 7 6 5 4 3 2 1 0</dd>
<dt>Data</dt>
<dd><span style="border: .1em dashed blue"> 0 1 0 </span>1 0 1 0 1</dd>
<dt>Mask</dt>
<dd><span style="border: .1em dashed red"> 1 1 1 </span>0 0 0 0 0</dd>
<dt>返却値</dt>
<dd> 1</dd>
</dl>
<div class="pad_10 z-depth-1 blue-text blank" style="font-size: .9em; position: absolute; top: 3.5em; left: 10em;background:#ffffffc4;">0 と 1 が混在</div>
<div class="pad_10 z-depth-1 red-text blank" style="font-size: .9em; position: absolute; bottom: .5em; left: 10em;background:#ffffffc4;border:#F44336 solid .2em">検査位置</div>
</div>
<div class="background c-round">
例 1 では 11100000 という Mask の 1 の位置（ビット番号 7 、 6 、 5 ）が検査位置です。<br />
Data では、この検査位置が 0 、 1 、 0 なので、 0 と 1 が混在しています。<br />
したがって、返却値は 1 になります。</p>
<p>つまり、 Mask 中で 1 になっている部分で検査位置を指定し、 Data 中でその位置が 0 だけなのか、 0 と 1 が混在しているのか、 1 だけなのかを返却値 0 、 1 、 2 で知らせるプログラムなのです。
</p></div>
<p>もうひとつ例があるので、この解釈が合っているかどうかを確認しておきましょう。</p>
<div class="row mag_h30" style="position: relative;">
<span class="chip">例 2</span></p>
<dl class="inline">
<dt>ビット番号</dt>
<dd> 7 6 5 4 3 2 1 0</dd>
<dt>Data</dt>
<dd> 0 0 1<span style="border: .1em dashed blue"> 1 </span>0 0 1<span style="border: .1em dashed blue"> 1 </span></dd>
<dt>Mask</dt>
<dd> 0 0 0<span style="border: .1em dashed red"> 1 </span>0 0 0<span style="border: .1em dashed red"> 1 </span></dd>
<dt>返却値</dt>
<dd> 2</dd>
</dl>
<div class="pad_10 z-depth-1 blue-text blank" style="font-size: .9em; position: absolute; top: 2.5em; left: 10.5em;background:#ffffffc4;">すべて 1</div>
<div class="pad_10 z-depth-1 red-text blank" style="font-size: .9em; position: absolute; bottom: 0em; left: 10.5em;background:#ffffffc4;border:#F44336 solid .2em">検査位置</div>
</div>
<div class="background c-round">
例 2 では 00010001 という Mask の 1 の位置（ビット番号 4 、 0 ）が検査位置です。<br />
Data では、この検査位置が 1 、 1 なので、全てが 1 です。<br />
したがって、返却値は 2 になります。
</div>
<p>これで、解釈が合っていることを確認できました。</p>
<h2>ポイント2: 事前に 2 進数の知識を習得しておく</h2>
<p>それほど頻度は多くないのですが、基本情報技術者試験の旧午後試験のアルゴリズム問題では、 2 進数の知識が必要なプログラムが出ることがありました。</p>
<p>以下の知識をきちんと習得できているかどうか確認してください。 ここでは、それぞれの知識を詳しく説明しませんが、もしも習得できていないことがあれば、お手元の教材（きっと何らかの教材をお持ちでしょう！）で学習してください。</p>
<p>今回の練習問題では、ビット演算の知識が必要です。</p>
<ul class="checkbox background">
<li>2 進数を 10 進数に変換する</li>
<li>10 進数を 2 進数に変換する</li>
<li>2 進数を 16 進数に変換する</li>
<li>16 進数を 2 進数に変換する</li>
<li>2 の補数表現でマイナスの数を表す</li>
<li>論理シフトと算術シフトの違いがわかる</li>
<li>AND 、OR 、XOR のビット演算（ビットごとの論理演算）ができる</li>
</ul>
<h2>ポイント3: コメントをヒントにする</h2>
<p>実務で作成されるプログラムでは、プログラムの保守性を高めるために、数多くのコメントが入れてあります。 <span class="u">コメントを読めば、誰でもプログラムの内容を理解できるようにしているのです。 </span></p>
<p>ただし、もしも試験問題のプログラムに数多くのコメントを入れたら、問題がやさしくなり過ぎてしまいます。<br />
とはいえ、まったくコメントを入れなければ、制限時間内に問題を解けなくなってしまうでしょう。</p>
<p>&nbsp;</p>
<p>そこで、試験問題のプログラムには、少しだけコメントが入れてあります。</p>
<p>このコメントは、コメントというよりも<span class="bold">制限時間内に問題を解くためのヒント</span>です。 プログラムの中にコメントを見たら「ヒントだ！」と思って、大いに注目してください。</p>
<p>この問題でも、ヒントとしてコメントが入っています。 以下の <code class="language-none"> /* </code> と <code class="language-none"> */ </code> で囲まれた文字列がコメントです。</p>
<pre>◯整数型: BitTest( 8 ビット論理型: Data, 8 ビット論理型: Mask)
  整数型: RC		<span class="red-text bold">/* 返却値 */</span>

  if ( <span class="blank">a</span> )
    RC ← 2		<span class="red-text bold">/* 返却値は 2 */</span>
  elseif ( <span class="blank">b</span> )
    RC ← 0		<span class="red-text bold">/* 返却値は 0 */</span>
  else
    RC ← 1		<span class="red-text bold">/* 返却値は 1 */</span>
  endif</pre>
<p><span class="red-text bold">/* 返却値 */</span> というコメントから、 RC という変数が返却値を入れるものであることがわかります。</p>
<p><span class="red-text bold">/* 返却値は 2 */</span> というコメントから、<span class="blank">a</span>には返却値を 2 にする条件、つまり Mask で指定した Data のビット位置が全て 1 である条件が入ることがわかります。</p>
<p><span class="red-text bold">/* 返却値は 0 */</span> というコメントから、<span class="blank">b</span>には返却値を 0 にする条件、つまり Mask で指定した Data のビット位置が全て 0 である条件が入ることがわかります。</p>
<p>&nbsp;</p>
<p><span class="red-text bold">/* RC を返却値として返す */</span> というコメントから、 <code class="language-none"> return </code>という命令が、返却値を返すものであることがわかります。</p>
<p>C 言語、Java 、Python などのプログラミング言語の経験があれば、この return の意味がわかると思いますが、擬似言語仕様書には return が示されていません。 このプログラムでは、仕様書にない表現を使っているので、それをコメントで説明しているのです。 このようなコメントもよくあります。</p>
<h2>ポイント4: 選択肢の変数に具体的な数値を設定してみる</h2>
<p>それでは、プログラムの穴埋めをやってみましょう。</p>
<p>これまでの記事でも何度かポイントとして取り上げてきましたが、<span class="u">基本情報技術者試験の問題は、すべて選択問題なのですから、選択肢を見て答えを選んでください。 </span></p>
<p><span class="blank">a</span>には、 Mask で指定した Data のビット位置が全て 1 である条件が入ります。 これは、選択肢ア～オのどれでしょう。</p>
<blockquote>
<ul class="options blue-grey-text">
<li>Data と Mask の値がどちらも &#8220;00000000&#8221;B</li>
<li>Data と Mask の値がどちらも Data</li>
<li>Data と Mask の値がどちらも Mask</li>
<li>Data と Mask の値がどちらか &#8220;00000000&#8221;B</li>
<li>Data と Mask の値がどちらか Mask</li>
</ul>
</blockquote>
<p>もしも、「う～む？」と悩んでしまったら、選択肢の変数に具体的な数値を設定してみましょう。</p>
<p>「具体例！」そうです。 問題にも具体例が示されていました。 返却値が 2 になる具体例は、例 2 です。</p>
<blockquote class="row mag_h30">
<div class="col m6 on-mobile-float-none grey lighten-5 c-round table-container">
    <span class="chip">例 2</span></p>
<table class="blue-grey-text">
<tr>
<td>ビット番号</td>
<td> 7 6 5 4 3 2 1 0</td>
</tr>
<tr>
<td>Data</td>
<td> 0 0 1 1 0 0 1 1</td>
</tr>
<tr>
<td>Mask</td>
<td> 0 0 0 1 0 0 0 1</td>
</tr>
<tr>
<td>返却値</td>
<td> 2</td>
</tr>
</table></div>
</blockquote>
<p>それでは、例 2 の具体例を想定すると、どの選択肢が適切でしょう。</p>
<p>選択肢は、どれも左辺で Data と Mask の AND 演算（ &#038; ）か OR 演算（ | ）を行っています。</p>
<p>これも、「う～む？」と悩んでしまったら、実際に AND 演算と OR 演算をやってみればよいのです（ AND と OR のビット演算の知識が不安に感じた方は <a class="tag" href="../../tag/論理回路">論理回路</a> のタグがついた記事で練習してみましょう！ ）。</p>
<pre>
    0 0 1 1 0 0 1 1  Data
AND 0 0 0 1 0 0 0 1  Mask
--------------------
    0 0 0 1 0 0 0 1 演算結果・・・ Mask と同じ
</pre>
<pre>
    0 0 1 1 0 0 1 1  Data
OR  0 0 0 1 0 0 0 1  Mask
--------------------
    0 0 1 1 0 0 1 1 演算結果・・・ Data と同じ
</pre>
<p>以上のように、 AND 演算の結果は Mask と同じになります。 これは、選択肢ウです。 OR 演算の結果は Data と同じになります。 これは、選択肢にはありません。</p>
<p>したがって、選択肢にあるウが正解です。 できましたね！</p>
<p>&nbsp;</p>
<p><span class="blank">b</span>には、 Mask で指定した Data のビット位置が全て 0 である条件が入ります。</p>
<p>この具体例は、問題にありませんでしたが、例 1 と例 2 を参考にして、自分で作ってみましょう。</p>
<p>ここでは、 Data を 00110011 に、 Mask を 11001100 にしてみます。</p>
<pre>
    0 0 1 1 0 0 1 1  Data
AND 1 1 0 0 1 1 0 0  Mask
--------------------
    0 0 0 0 0 0 0 0 演算結果・・・ "00000000"B
</pre>
<pre>
    0 0 1 1 0 0 1 1  Data
OR  1 1 0 0 1 1 0 0  Mask
--------------------
    1 1 1 1 1 1 1 1 演算結果・・・ "11111111"B
</pre>
<p>以上のように、 AND 演算の結果は <code class="language-none">"00000000"B</code> になります。 これは、選択肢アです。</p>
<p>OR 演算の結果は <code class="language-none">"11111111"B</code> になります。 これは、選択肢にはありません。</p>
<p>したがって、選択肢にあるアが正解です。 できましたね！</p>
<p>&nbsp;</p>
<p><span class="chip mag_rt10">解答</span>a － ウ, b － ア</p>
<div class="divider mag_h50"></div>
<p><span class="bold">「習うより慣れろ」</span>ということわざがあります。 アルゴリズム穴埋め問題の克服に関しては、正にその通りでしょう。</p>
<p>この連載では、これからも短い練習問題を掲載していきますので、穴埋めに慣れることを目指してください。</p>
<p>正解を見出すポイントとして、同じことが示されることもあると思いますが、それは、多くの問題に共通したポイントがあるからです。</p>
<p>それでは、またお会いしましょう！</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/patterns_algorithms/if_else/">2進数の知識が必要なプログラム｜アルゴリズムとプログラミング問題を解くコツ</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題」過去問と解説｜平成21年度 秋期 の過去問やるならこれをやれ</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h21_autumn/</link>
		<pubDate>Mon, 23 Dec 2019 04:38:14 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[IPアドレス]]></category>
		<category><![CDATA[UML]]></category>
		<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=3353</guid>
		<description><![CDATA[<p>ここでは、平成 21 年度 秋期 基本情報技術者試験の午前試験 の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。 やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習し [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h21_autumn/">「厳選5題」過去問と解説｜平成21年度 秋期 の過去問やるならこれをやれ</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_2009h21_2/2009h21a_fe_am_qs.pdf" rel="noopener" target="_blank">平成 21 年度 秋期 基本情報技術者試験の午前試験</a> の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。</p>
<p>やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習しないとできない問題）です。</p>
<style>h2 .chip{vertical-align:middle;background:#3f51b5;color:white;margin-right:.75em;}.chip i{font-size:2em!important;}table{font-size:.85em;}dd,dl.inline dd{margin-left:2em}@media screen and (min-width:601px){.responsive-width{width:60%}}pre,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:#eceff1;color:#263238;}pre{padding:1em 1.5em;margin:1.5em 0;}code{padding:.15em .5em;}pre{}</style>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_one</i></span>CUI 環境でディレクトリを指定する方法を知っておこう</h2>
<div class="card-panel mag_h30">
問 19　(平成 21 年度 秋期)</p>
<p>A ， B というディレクトリ名をもつ複数個のディレクトリが図の構造で管理されている。</p>
<figure>
<img class="mag_h30 hoverable materialboxed responsive-width" data-caption="問 19" src="../../wp-content/uploads/2019/12/q19_figure.jpg" alt="" loading="lazy" /><br />
</figure>
<p>カレントディレクトリを &yen;A&yen;B → .. → ..&yen;B → .&yen;A の順に移動させた場合，最終的なカレントディレクトリはどこか。 ここで，ディレクトリの指定方法は次のとおりとする。</p>
<p>〔ディレクトリの指定方法〕</p>
<dl class="inline">
<dt>(1)</dt>
<dd>ディレクトリは， &#8220;ディレクトリ名 &yen;･･･&yen; ディレクトリ名&#8221; のように，経路上の ディレクトリを順に &#8220;&yen;&#8221; で区切って並べた後に &#8220;&yen;&#8221; とディレクトリ名を指定する。 </dd>
<dt>(2)</dt>
<dd>カレントディレクトリは &#8220;.&#8221; で表す。 </dd>
<dt>(3)</dt>
<dd>1階層上のディレクトリは &#8220;..&#8221; で表す。  </dd>
<dt>(4)</dt>
<dd>始まりが &#8220;&yen;&#8221; のときは，左端にルートディレクトリが省略されているものとする。 </dd>
<dt>(5)</dt>
<dd>始まりが &#8220;&yen;&#8221; ， &#8220;.&#8221; ， &#8220;..&#8221;  のいずれでもないときは，左端にカレントディレクトリ配下であることを表す &#8220;.&yen;&#8221; が省略されているものとする。 </dd>
</dl>
<p>ア　&yen;A　　イ　&yen;A&yen;A　　<br class="hide-on-med-and-up">ウ　&yen;A&yen;B&yen;A　　エ　&yen;B&yen;A
</div>
<div class="chip">解説</div>
<p>UNIX 系の OS や Windows などを操作するには、</p>
<ul>
<li>ウインドウのメニューやアイコンを操作するビジュアルな <span class="bold">GUI（ Graphical User Interface ）</span>環境</li>
<li>コマンドをキー入力して操作する <span class="bold">CUI（ Character User Interface ）</span>環境</li>
</ul>
<p>があります。 GUI 環境でフォルダと呼ばれるものは、 CUI 環境で<span class="bold">ディレクトリ</span>と呼ばれます。</p>
<p>この問題では、 CUI 環境におけるカレントディレクトリ（現在の操作対象のディレクトリ）の移動がテーマになっています。 問題の図に示されたディレクトリの構造で、指定された通りにカレントディレクトリを移動してみましょう。</p>
<p>&nbsp;</p>
<p>はじめは、 &yen;A&yen;B がカレントディレクトリです。 先頭の &yen; はルートを示し、それ以降の &yen; はディレクトリの区切りを示します。</p>
<p>したがって、 &yen;A&yen;B は「ルートの下の A 、その下の B 」という意味であり、以下がカレントディレクトリになります（これ以降では、カレントディレクトリを赤色の円で囲んで示します）。</p>
<figure>
<img class="hoverable z-depth-5 materialboxed responsive-width" src="../../wp-content/uploads/2019/12/q19_figure2-300x237.jpg" alt="" loading="lazy" /><br />
</figure>
<p>次に、 &#8220;..&#8221; に移動します。  &#8220;..&#8221; は、「 1 つ上のディレクトリ」を意味するので、現在位置から 1 つ上に上がって、以下がカレントディレクトリになります。</p>
<figure>
<img class="hoverable z-depth-5 materialboxed responsive-width" src="../../wp-content/uploads/2019/12/q19_figure3-300x237.jpg" alt="" loading="lazy" /><br />
</figure>
<p>次に、 ..&yen;B に移動します。 これは、「 1 つ上のディレクトリに上がって、その下の B 」という意味であり、以下がカレントディレクトリになります。</p>
<figure>
<img class="hoverable z-depth-5 materialboxed responsive-width" src="../../wp-content/uploads/2019/12/q19_figure4-300x237.jpg" alt="" loading="lazy" /><br />
</figure>
<p>最後に、 .&yen;Aに移動します。  &#8220;.&#8221; は、「カレントディレクトリ」を意味するので、現在位置から A に下がって、以下がカレントディレクトリになります。</p>
<p>このディレクトリは、「ルートの下の B 、その下の A 」なので、 &yen;B&yen;A です。 したがって、選択肢エが正解です。</p>
<figure>
<img class="hoverable z-depth-5 materialboxed responsive-width" src="../../wp-content/uploads/2019/12/q19_figure5-300x237.jpg" alt="" loading="lazy" /><br />
</figure>
<p><span class="chip mag_tp30">解答</span>　エ</p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_two</i></span>半加算器と全加算器の違いを知っておこう</h2>
<div class="card-panel mag_h30">
問 25　(平成 21 年度 秋期)</p>
<p>図は全加算器を表す論理回路である。 図中の x に 1 ， y に 0 ， z に 1 を入力したとき，出力となる c(けた上げ数) ， s(和) の値はどれか。</p>
<figure>
<img class="hoverable z-depth-5 materialboxed" style="margin:auto;" src="../../wp-content/uploads/2019/12/q25_figure.jpg" alt="" loading="lazy" /><br />
</figure>
<table class="centered responsive-width mag_h30">
<thead>
<tr>
<th></th>
<th>c</th>
<th>s</th>
</tr>
</thead>
<tbody>
<tr>
<td>ア</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>イ</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>ウ</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>エ</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table>
</div>
<div class="chip">解説</div>
<p>この連載では、かつて<a href="../how2judge_nesessary_unnesessary/#i-5">半加算器の問題（平成 21 年度 春期 問 25 ）</a>を取り上げました。</p>
<p>半加算器は、 XOR 演算と AND 演算を使って、 1 桁の 2 進数を加算するものです。 複数桁の 2 進数を加算するには、半加算器だけでなく、全加算器も必要になります。</p>
<p>&nbsp;</p>
<p>例として、 0101 と 0011 という 4 ビットの 2 進数を加算するとしましょう。 最下位桁は、その桁にある 2 つの数値を足すだけであり、これは半加算器で行えます。</p>
<p>最下位桁より上の桁は、その桁にある 2 つの数値と、下位桁からの桁上がり、全部で 3 つの数値を足すことになります。 これを実現するのが、<span class="bold">全加算器</span>です。</p>
<p>したがって、 4 ビットの 2 進数の加算は、以下のように、 1 つの半加算器と 3 つの全加算器で実現されることになります。</p>
<figure><figcaption>図　4 ビットの加算の例</figcaption><img class="materialboxed z-depth-5" data-caption="図　4 ビットの加算の例" src="../../wp-content/uploads/2020/11/4bit_adder.png" loading="lazy" style="margin: auto;"><br />
</figure>
<p>問題に示された全加算器の図を見てください。</p>
<p>左側の x 、 y 、 z は、加算する 3 つの数字です。 右側の c は計算結果の桁上がり（ carry ）で、 s は sum （和）です。</p>
<p>ここでは、 x = 1 、 y = 0 、 z = 1 とするので、計算結果は、 1 + 0 + 1 = 10 になり、 c が 1 で s が 0 です。 したがって、選択肢ウが正解です。</p>
<p>&nbsp;</p>
<p>全加算器の内部では、半加算器を 2 つ使っています。 以下に全加算器の仕組みを示します。</p>
<ol class="background c-round">
<figure>
<img class="hoverable materialboxed responsive-width pad_05" data-caption="全加算器" src="../../wp-content/uploads/2019/12/q25_figure3.jpg" alt="" loading="lazy" /><br />
</figure>
<li>x と y を半加算器 1 で足す</li>
<li>その結果の s と z を半加算器 2 で足す</li>
<li>その結果の s を全加算器の s とする</li>
<li>半加算器 1 の c と半加算器 2 の c を OR 回路につなぎ、その結果が全加算器の c とする</li>
</ol>
<p><span class="chip mag_tp30">解答</span>　ウ</p>
<div class="divider mag_tp40 mag_bt10"></div>
<p class="grey-text small-text"><i class="material-icons mag_rt05">info_outline</i>加算器 / 半加算器に関する詳しい記事</p>
<p><a href="../../mastering_tech/digital_logic/"></p>
<div class="row valign-wrapper pad_w20">
<div class="col s3 m2 flex pad_00"><img src="../../wp-content/uploads/2020/11/digital_logic_cover-300x169.png" width="640" height="360" /></div>
<div class="col s9 m10 pad_10 blue-grey-text bold">基本情報でわかる 論理演算 「真理値表を書けば、半加算器と全加算器の仕組みがわかる」</div>
</div>
<p></a></p>
<div class="divider mag_bt40 mag_tp10"></div>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_3</i></span>サブネットマスクと CIDR 表記の対応を知っておこう</h2>
<div class="card-panel mag_h30">
問 39　(平成 21 年度 秋期)</p>
<p>IP アドレス 10.1.2.146 ，サブネットマスク 255.255.255.240 のホストが属するサブネットワークはどれか。</p>
<p>ア　10.1.2.132/26　　<br class="hide-on-med-and-up">イ　10.1.2.132/28<br />
ウ　10.1.2.144/26　　<br class="hide-on-med-and-up">エ　10.1.2.144/28
</div>
<div class="chip">解説</div>
<p>サブネットワークとは、 1 つのネットワークを分割したものです。 IPv4 の IP アドレスでは、サブネットマスクおよび CIDR（ Classless Inter-Domain Routing 、サイダー）表記によって、サブネットワークを示すことができます。</p>
<p>この問題は、255.255.255.240 というサブネットマスクが、 CIDR 表記ではどのようになるかを、選択肢から選ぶものです。</p>
<p>&nbsp;</p>
<p>IPv4 の IP アドレスのサイズは、 32 ビットです。 255.255.255.240 というサブネットマスクを 2 進数で表記してみましょう。</p>
<p class="grey-text hide-on-med-and-up mag_h10 small-text"><i class="material-icons light-blue-text mag_rt05">swipe</i>横スクロールできます</p>
<pre>11111111.11111111.11111111.11110000</pre>
<p>32 ビットの上位 28 ビットに 1 が並び、残りの下位 4 ビットに 0 が並んでいます。</p>
<p>このように、サブネットマスクは、上位桁に 1 が並び下位桁に 0 が並んだ形式になっていて、 <span class="bold">1 が並んだ部分がサブネットワーク（ネットワークとサブネットのアドレス）</span>で、 <span class="bold">0 が並んだ部分がホストアドレスである</span>ことを示しています。</p>
<p>&nbsp;</p>
<p>10.1.2.146 という IP アドレスのサブネットワークを求めてみましょう。 10.1.2.146 を 2 進数で表記します。</p>
<pre>00001010.00000001.00000010.10010010</pre>
<p>ここでは、上位 28 ビットがサブネットワークなので、</p>
<pre>00001010.00000001.00000010.1001xxxx</pre>
<p>になります。</p>
<p><code>xxxx</code> の部分は、「設定なし」という意味にしたいので、 0 で埋めて、</p>
<pre>00001010.00000001.00000010.10010000</pre>
<p>とします。</p>
<p>これを 10 進数表記にすると、 10.1.2.144 です。</p>
<p>&nbsp;</p>
<p>サブネットワークを 10.1.2.144 と示しただけでは、上位何桁までがサブネットワークなのかがわかりません。 そこで、 CIDR 表記が使われます。</p>
<p>CIDR 表記は、<span class="bold"> / の後に上位桁の桁数を示したもの</span> です。</p>
<p>ここでは、上位 28 ビットがサブネットワークなので、それを /28 で示します。 したがって、 10.1.2.144/28 となっている選択肢エが正解です。</p>
<p><span class="chip mag_tp30">解答</span>　エ</p>
<div class="divider mag_h30"></div>
<p class="grey-text mag_tp30"><i class="material-icons light-blue-text">search</i><span class="grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/IPアドレス/" class="tag">IP アドレス</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_4</i></span>UML のクラス図とシーケンス図の役割を知っておこう</h2>
<div class="card-panel mag_h30">
問 45　(平成 21 年度 秋期)</p>
<p>UML 2.0 で定義している図のうち，動的な振る舞いを表現するものはどれか。</p>
<p>ア　オブジェクト図　　<br class="hide-on-med-and-up">イ　クラス図<br />
ウ　シーケンス図　　<br class="hide-on-med-and-up">エ　パッケージ図
</div>
<div class="chip">解説</div>
<p>UML 2.0 では、 13 種類の図が定義されていますが、試験によく出るのは、<span class="bold">クラス図</span>と<span class="bold">シーケンス図</span>です。</p>
<p>これらは、オブジェクト指向において最も重要な概念である<span class="bold">「オブジェクト」と「メッセージ」を示すもの</span>です。</p>
<dl class="background c-round">
<dt class="bold">クラス図</dt>
<dd>オブジェクトの<span class="bold">静的な構造</span>（構成要素と関連）</dd>
<dt class="bold">シーケンス図</dt>
<dd>オブジェクトの<span class="bold">動的な振る舞い</span>（メッセージの受け渡し）</dd>
</dl>
<p>この問題は、動的な振る舞いを表現する図を選ぶのですから、選択肢ウのシーケンス図が正解です。</p>
<p>&nbsp;</p>
<p>言葉だけではイメージがつかめないと思いますので、クラス図とシーケンス図の簡単な例をお見せしましょう。 ここでは、ユーザーとコンピュータがジャンケンをするプログラムを作るとします。</p>
<div class="background c-round">
プログラムが、どのような構成要素を持つクラスから構成され、どのように関連しているのかを示すのが、クラス図です。 クラス図では、四角形を 3 つに区切り、上から順にクラス名、属性（クラスが持つデータ）、振る舞い（クラスが持つ処理）を記述します。</p>
<p>ここでは、「ユーザー」「コンピュータ」「審判」という 3 つのクラスがあるとしています。</p>
<figure class="center"><figcaption class="chip mag_h10"><i class="material-icons blue-text mag_rt05">description</i>クラス図の例</figcaption><img class="hoverable materialboxed responsive-width pad_05" data-caption="クラス図の例" src="../../wp-content/uploads/2019/12/q45_figure.jpg" alt="" loading="lazy" /><br />
</figure>
<p>「審判」から「ユーザー」と「コンピュータ」に伸びた破線の矢印は、「審判」が「ユーザー」と「コンピュータ」を使うことを意味します。 クラス図にも振る舞いがありますが、動的ではありません。 そのクラスが、その振る舞いを持っていることを示しているだけなので、静的です。
</p></div>
<div class="background c-round">
プログラムの実行時には、クラスがメモリにロードされます。 これを<span class="bold">「クラスのインスタンス」または「オブジェクト」</span>と呼びます。 シーケンス図は、プログラムの実行時のオブジェクト間のメッセージの受け渡しを示します。</p>
<figure class="center"><figcaption class="chip mag_h10"><i class="material-icons blue-text mag_rt05">description</i>シーケンス図の例</figcaption><img class="hoverable materialboxed responsive-width pad_05" data-caption="シーケンス図の例" src="../../wp-content/uploads/2019/12/q45_figure2.jpg" alt="" loading="lazy" /><br />
</figure>
<ul class="background c-round">
<p class="post-title">シーケン図の見方</p>
<li>四角形で囲まれた「：クラス名」は、そのクラスのインスタンス（オブジェクト）を意味します</li>
<li>そこから下に伸びた破線は、インスタンスの存在期間を示します</li>
<li>図の上から下に時間が経過するとして、実線の矢印でメッセージ（他のオブジェクトの振る舞いの呼び出し）を示します</li>
<li>破線の矢印でメッセージへの応答を示します。 縦長の四角形は、処理を行っている区間を示します</li>
</ul>
<p>このようにして、シーケンス図は、オブジェクトの動的な振る舞いを表現するのです。
</p></div>
<p><span class="chip mag_tp30">解答</span>　ウ</p>
<div class="divider mag_h30"></div>
<p class="grey-text mag_tp30"><i class="material-icons light-blue-text">search</i><span class="grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/UML/" class="tag">UML</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_5</i></span>カプセル化、継承、多態性の意味を知っておこう</h2>
<div class="card-panel mag_h30">
問 46　(平成 21 年度 秋期)</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>
<p>&nbsp;</p>
<p>カプセル化とは、属性と振る舞いをまとめて 1 つのオブジェクトにすることです。 まとめることによって、属性や振る舞いの変更がオブジェクトの内部で対処できるようになり、外部に影響を与えにくくなります。</p>
<p>したがって、カプセル化の効果に該当するのは、選択肢アであり、これが正解です。</p>
<dl class="background c-round">
<dt class="bold">継承とは</dt>
<dd>既存のクラス（親クラス）を改造することなく、必要な機能を付け足して新たなクラス（子クラス）を作成することです。 <br />子クラスは、親クラスの属性と振る舞いを利用できます。 <br />継承の効果に該当するのは、選択肢ウです。 </dd>
<dt class="bold">多態性とは</dt>
<dd>同じ構文の振る舞い（同じメッセージで呼び出せる振る舞い）を、複数のオブジェクトが持つことです。 <br />これによって、オブジェクトを利用する側は、同じメッセージで、様々なオブジェクトを利用できます。 <br />多態性の効果に該当するのは、選択肢エです。 </dd>
</dl>
<p><span class="chip mag_tp30">解答</span>　ア</p>
<div class="divider mag_h30"></div>
<p class="grey-text mag_tp30"><i class="material-icons light-blue-text">search</i><span class="grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/オブジェクト指向/" class="tag">オブジェクト指向</a></p>
<div class="divider mag_tp50 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/h21_autumn/">「厳選5題」過去問と解説｜平成21年度 秋期 の過去問やるならこれをやれ</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; 平成23年度 秋期 の過去問やるならこれをやれ</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h23_autumn/</link>
		<pubDate>Sun, 20 Oct 2019 07:44:00 +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=2377</guid>
		<description><![CDATA[<p>ここでは、平成23年度 秋期 基本情報技術者試験の午前試験 の中から「やるべき問題」を5題に厳選し、ぶっちゃけた解説をさせていただきます。 やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習しないとで [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h23_autumn/">「厳選5題」過去問と解説 | 平成23年度 秋期 の過去問やるならこれをやれ</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_2011h23_2/2011h23a_fe_am_qs.pdf" rel="noopener" target="_blank">平成23年度 秋期 基本情報技術者試験の午前試験</a> の中から「やるべき問題」を5題に厳選し、ぶっちゃけた解説をさせていただきます。</p>
<p>やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習しないとできない問題）です。</p>
<style>h2 .chip,img{vertical-align:middle}.italic-text{font-style:italic;font-family:Times;font-weight:600;}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:#fafafa;color:#37474f;border-radius:.5em;padding:1em;font-size:1em}.bar{text-decoration:overline}dl.inline dd{margin-left:2em}h2 .chip{background:#3f51b5;color:#fff;margin-right:.75em}.chip i{font-size:2em!important}</style>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_one</i></span>バッカス・ナウア記法の読み方を知っておこう</h2>
<div class="card-panel mag_h30">
問 4　(平成 23 年度 秋期)</p>
<p>次の規則から生成することができる式はどれか。</p>
<p>〔規則〕</p>
<pre>
<式> ::= <変数> | (<式> + <式>) | <式>＊<式>
<変数> ::= A | B | C | D
<span class="grey-text small-text hide-on-med-and-up"><i class="material-icons mag_rt05">info</i>横へスクロールできます</span>
</pre>
<p>ア　A + ( B + C ) *  D　　<br class="hide-on-med-and-up">イ　( A + B ) + ( C + D )<br />
ウ　( A + B ) ＊ ( C + D )　　<br class="hide-on-med-and-up">エ　( A ＊ B ) + ( C ＊ D )
</div>
<div class="chip">解説</div>
<p>「規則」の部分に何やら不思議な表記がありますが、これは「バッカス・ナウア記法」と呼ばれるものです。</p>
<p>バッカスは、1950 年代に FORTRAN というプログラミング言語を開発した人物で、ナウアは、そのお弟子さんです。バッカス・ナウア記法は、両者によって考案された、プログラミング言語の文法の表記方法です。</p>
<p>バッカス・ナウア記法では、</p>
<pre>左辺 ::= 右辺</pre>
<p>という構文で、「左辺とは右辺である」を示します。<br />
縦棒（ | ）は、「または」を意味します。</p>
<p>これだけわかれば、問題に示された 2 行の「規則」の意味がわかるでしょう。</p>
<p>&nbsp;</p>
<p>1 行目は、「式とは、変数、または、( 式 ＋ 式 ) 、または、式 ＊ 式、である」という意味です。<br />
2 行目は、「変数とは、A 、または B 、または C 、または D である」という意味です。</p>
<p>＋ はカッコで囲み、＊ はカッコで囲まないことがポイントです。</p>
<p>&nbsp;</p>
<p>それでは、選択肢を見てみましょう。</p>
<p>アは、A の後にある ＋ をカッコで囲んでいないので、規則に合っていません。<br />
イは、( A ＋ B ) と ( C ＋ D ) の間にある ＋ をカッコで囲んでいないので、規則に合っていません。<br />
ウは、規則に合っています。<br />
エは、( A ＊ B ) と ( C ＊ D ) の間にある ＋ をカッコで囲んでいないので、規則に合っていません。</p>
<p>したがって、ウが正解です。</p>
<p><span class="chip">解答</span>ウ</p>
<div class="divider mag_h30"></div>
<p><i class="material-icons light-blue-text">search</i><span class="grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/論理式" class="tag">論理式</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_two</i></span>論理式をベン図で表す練習をしておこう</h2>
<div class="card-panel mag_h30">
問 26　(平成 23 年度 秋期)</p>
<p>論理式 <span class="italic-text">X = <span class="bar">A</span> ・ B  +  A ・<span class="bar">B</span>　+　<span class="bar">A</span> ・ <span class="bar">B</span></span> と同じ結果が得られる論理回路はどれか。ここで，論理式中の・は論理積，+ は論理和，<span class="italic-text"><span class="bar">X</span></span> は <span class="italic-text">X</span> の否定を表す。</p>
<div class="row">
<div class="col m6 s12">ア　<img loading="lazy" src="../../wp-content/uploads/2019/10/q26_option_a.png" alt="" /></div>
<div class="col m6 s12">イ　<img loading="lazy" src="../../wp-content/uploads/2019/10/q26_option_i.png"></div>
<div class="col m6 s12">ウ　<img loading="lazy" src="../../wp-content/uploads/2019/10/q26_option_u.png" alt="" /></div>
<div class="col m6 s12">エ　<img loading="lazy" src="../../wp-content/uploads/2019/10/q26_option_e.png"></div>
</div>
</div>
<div class="chip">解説</div>
<p>これまでの連載の中で、論理式や論理回路の問題に対して、<a href="../../tag/テクニック-具体的な値を想定して解く/">「具体的な値を想定して解く」</a>という解法を紹介しましたが、別の解法もあります。</p>
<p>それは、<span class="bold">「ベン図に表して解く」</span>です。</p>
<p>この問題は、「ベン図に表して解く」という解法が合っています。実際にやってみて、「これは、A と B に具体的な値を想定して解くより、ベン図に表して解いた方が簡単だ！」ということを実感してください。</p>
<p>&nbsp;</p>
<p>この問題では、論理積（AND 演算）、論理和（ OR 演算）、否定（ NOT 演算）を、・ 、＋ 、<span class="bar">　</span> 上付き線（バー）で表しています。</p>
<p>論理演算で注意してほしいのは、<span class="bold">否定 ＞ 論理積 ＞ 論理和の順に優先順位が高い</span> ことです。</p>
<p>したがって、問題文に示された論理式は、<br />
「 A でなく、かつ、B である」<br />
または<br />
「 A であり、かつ、B でない」<br />
または<br />
「 A でなく、かつ、B でない」<br />
という意味です。</p>
<p>&nbsp;</p>
<p>これをベン図に示してみましょう。以下のようになります。</p>
<figure><figcaption class="grey-text mag_h10">図　問題文に示された論理式をベン図に示したもの</figcaption><img data-caption="図　問題文に示された論理式をベン図に示したもの" class="materialboxed hoverable z-depth-5" src="../../wp-content/uploads/2019/10/q26_figure.jpg" loading="lazy"><br />
</figure>
<p>このベン図が示している領域は、A と B の交わりを除いた部分です。</p>
<p>交わりは、AND 演算なので、A AND B を除いた部分、すなわち NOT (A AND B) であり、A NAND B です。</p>
<p>選択肢のアは AND 回路、イは NAND 回路、ウは OR 回路、エは NOR 回路です。</p>
<p>したがって、イが正解です。</p>
<p><span class="chip">解答</span>イ</p>
<div class="divider mag_h30"></div>
<p><i class="material-icons light-blue-text">search</i><span class="grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/論理回路" class="tag">論理回路</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_3</i></span>パスワードの盗用を防止する方法を知っておこう</h2>
<div class="card-panel mag_h30">
問 42　(平成 23 年度 秋期)</p>
<p>入力パスワードと登録パスワードを用いて利用者を認証する方法において，パスワードファイルへの不正アクセスによる登録パスワードの盗用防止策はどれか。</p>
<dl class="inline">
<dt>ア</dt>
<dd>パスワードに対応する利用者 ID のハッシュ値を登録しておき，認証時に入力された利用者 ID をハッシュ関数で変換して参照した登録パスワードと入力パスワードを比較する。</dd>
<dt>イ</dt>
<dd>パスワードをそのまま登録したファイルを圧縮しておき，認証時に復元して，入力されたパスワードと比較する。</dd>
<dt>ウ</dt>
<dd>パスワードをそのまま登録しておき，認証時に入力されたパスワードと登録内容をともにハッシュ関数で変換して比較する。</dd>
<dt>エ</dt>
<dd>パスワードをハッシュ値に変換して登録しておき，認証時に入力されたパスワードをハッシュ関数で変換して比較する。</dd>
</dl>
</div>
<div class="chip">解説</div>
<p>ID とパスワードを使って利用者を認証するサーバには、それらを記録したパスワードファイルがあります。「そのファイルを盗まれたら、不正アクセスされてしまう！」と心配になるでしょう。</p>
<p>でもご安心ください。ちゃんと盗用防止策が施されています。</p>
<p>それは、パスワードをハッシュ値に変換して記録することです。その仕組みを、シンプルな具体例で説明しましょう。</p>
<p>&nbsp;</p>
<p>ID が「 seplus 」でパスワードが「 abc123 」だとしましょう。これらをそのままパスワードファイルに記録すると、盗まれたらアウトです。</p>
<p>そこで、あらかじめ取り決めておいた計算方法で、パスワードを数値に変換して記録します。</p>
<p>この数値が、<span class="bold">ハッシュ値</span> です。</p>
<p>&nbsp;</p>
<p>ここでは、「パスワードを構成するすべての文字の ASCII コードを足す」という計算方法を使うことにします。</p>
<p>「 abc123 」というパスワードのハッシュ値は、97 ＋ 98 ＋ 99 ＋ 49 ＋ 50 ＋ 51 ＝ 444 になります。<br />
パスワードファイルには、「 seplus 」という ID と、「 444 」というハッシュ値を記録するのです。</p>
<p>利用者がログインするときには、入力された「 abc123 」というパスワードから「 444 」というハッシュ値が計算され、それがパスワードファイルに記録されているハッシュ値と一致すれば、本人であると認証されます。</p>
<p>もしも、パスワードファイルが盗まれても、「 abc123 」というパスワードは盗まれないので、不正アクセスはできません。</p>
<div class="pink lighten-5 pad_20 c-round">
「いやいや、そんなことはない！ 444 というハッシュ値は盗まれてしまうのだから、 444 というハッシュ値になるパスワードを用意すれば、不正アクセスできてしまうじゃないか！<br />
たとえば、 bbb 222 というパスワードのハッシュ値は、 444 になる！」
</div>
<p>と思われるでしょう。</p>
<p>たしかに、「パスワードを構成するすべての文字の ASCII コードを足す」という単純な計算方法では、同じハッシュ値になるパスワードを簡単に用意できてしまいます。</p>
<p>そこで、実際には、同じハッシュ値を得るパスワードを見つけるのが困難になるように、もっと複雑な計算方法が使われているのです。</p>
<p>&nbsp;</p>
<p>それでは、選択肢を見てみましょう。</p>
<p>アは利用者 ID をハッシュ値にして登録、<br />
イはパスワードを圧縮して登録、<br />
ウはパスワードをそのまま登録してハッシュ値を比較、<br />
エはパスワードをハッシュ値に変換して登録</p>
<p>なので、エが正解です。</p>
<p><span class="chip">解答</span>エ</p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_4</i></span>ウイルスを検出する様々な方法を知っておこう</h2>
<div class="card-panel mag_h30">
問 43　(平成 23 年度 秋期)</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>
<ul class="background c-round">
<li>チェックサム法（ check sum ＝ チェック用の合計値）</li>
<li>コンペア法（ compare ＝ 比較）</li>
<li>パターンマッチング法（ pattern matching ＝ パターンの一致）</li>
<li>ヒューリスティック法（ heuristic ＝ 発見）</li>
<li>ビヘイビア法（ behavior ＝ 振る舞い）</li>
</ul>
<p>などがあります。それぞれの特徴を以下に示します。</p>
<table class="striped block responsive-width" style="font-size:.85em">
<thead>
<tr>
<th>名称</th>
<th>検出方法</th>
</tr>
</thead>
<tbody>
<tr>
<th>チェックサム法</th>
<td>ファイルのチェックサムが合わなければ感染していると判断する</td>
</tr>
<tr>
<th>コンペア法</th>
<td>ウイルスに感染していない原本と比較して、異なっていれば感染していると判断する</td>
</tr>
<tr>
<th>パターンマッチング法</th>
<td>既知のウイルスの特徴を記録しておき、プログラムの中に一致する部分があれば、感染していると判断する</td>
</tr>
<tr>
<th>ヒューリスティック法</th>
<td>ウイルスが行う動作を決めておき、プログラムの中に一致する動作があれば、感染していると判断する</td>
</tr>
<tr>
<th>ビヘイビア法</th>
<td>プログラムの動作を監視し、通信量やエラーの急激な増加などの異常があれば、感染していると判断する</td>
</tr>
</tbody>
</table>
<p>選択肢を見てみましょう。</p>
<p>アは、感染前と感染後のファイルを比較するので、コンペア法です。<br />
イは、既知ウイルスのシグネチャコード（特徴）と比較するので、パターンマッチング法です。<br />
ウは、異常現象を監視するので、ビヘイビア法です。<br />
エは、チェックサムと照合するので、チェックサム法です。</p>
<p>したがって、イが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>イ</p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_5</i></span>ソフトウェア開発手法の種類を知っておこう</h2>
<div class="card-panel mag_h30">
問 50　(平成 23 年度 秋期)</p>
<p>要求分析から実装までの開発プロセスを繰り返しながら，システムを構築していくソフトウェア開発手法はどれか。</p>
<p>ア　ウォータフォールモデル　　<br class="hide-on-med-and-up">イ　スパイラルモデル<br />
ウ　プロトタイピングモデル　　<br class="hide-on-med-and-up">エ　リレーショナルモデル
</div>
<div class="chip">解説</div>
<p>基本情報技術者試験で取り上げられるソフトウェア開発手法の種類は、ウォータフォールモデル、プロトタイピングモデル、スパイラルモデルの 3 つです。午前試験は、四択問題なので、もう 1 つ選択肢が必要です。</p>
<p>そこで、リレーショナルモデルという無関係な用語を選択肢に入れています。リレーショナルモデルは、データベースに関する用語です。</p>
<p>&nbsp;</p>
<p>ウォータフォールモデルは、全体で進捗を合わせて、開発工程を後戻りしないようにする手法です。ウォーターフォール（ waterfall ）は、「滝」という意味です。後戻りしないことを滝に例えているのです。</p>
<p>プロトタイピングモデルは、プロトタイプ（ prototype ＝ 試作品）を作ってから開発を行う手法です。</p>
<p>スパイラルモデルは、要求分析から実装までの開発工程を繰り返す手法です。スパイラル（ spiral ）は、「らせん」という意味で、繰り返すことを表しています。</p>
<p>したがって、イが正解です。</p>
<p><span class="chip">解答</span>イ</p>
<div class="divider mag_h50"></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/h23_autumn/">「厳選5題」過去問と解説 | 平成23年度 秋期 の過去問やるならこれをやれ</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>やるべき or やる必要がない過去問の見分け方「厳選5題」過去問と解説シリーズ</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/how2judge_nesessary_unnesessary/</link>
		<pubDate>Fri, 15 Mar 2019 04:20:11 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[MIPS]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[伝送時間]]></category>
		<category><![CDATA[午前問題]]></category>
		<category><![CDATA[学習方法]]></category>
		<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=735</guid>
		<description><![CDATA[<p>もしも、「基本情報技術者試験に合格するには、どう勉強するとよいか？」と聞かれたら、多くの人が「過去問題を解いて練習すればよい！」と答えるでしょう。 長年、基本情報技術者試験の対策講座で講師をしてきた筆者も、まったくその通 [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/how2judge_nesessary_unnesessary/">やるべき or やる必要がない過去問の見分け方「厳選5題」過去問と解説シリーズ</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>&nbsp;</p>
<p>ただし、<span class="bold">ただ闇雲に全問をやればよい、というものではありません</span>。</p>
<p><span class="u">よく出る問題であり、かつ、練習すればできる問題（練習しないとできない問題）に絞った方が、効果的であり効率的な勉強法です。</span></p>
<p>&nbsp;</p>
<p>そこで、この連載では、これまでに実施された午前試験の中から<span class="bold">「これをやれ！」という問題を 5 問だけ厳選して、解き方を解説します。</span></p>
<p>また、ありきたりの解説には飽き飽きしているでしょうから、市販書には書けないような、ぶっちゃけた解説をさせていただきます。</p>
<p>&nbsp;</p>
<p>第 1 回の今回は、現行の試験制度になった最初の試験である <a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_1/2009h21h_fe_am_qs.pdf" rel="noopener" target="_blank">平成 21 年度 春期</a> を題材にして、やるべき問題 5 題と、やる必要がない問題 5 題を示します。</p>
<p class="blue-grey-text background small-text"><i class="material-icons blue-text">info</i> 編集部よりお知らせ<br />本記事ではわかりやすいよう、問題文にシンタックスハイライトを入れています</p>
<style>h2 .chip{vertical-align:middle}.divider{margin:2em 0}.card-panel>pre{margin:1em -24px;padding:auto 24px}pre,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:#eceff1;color:#263238;}pre{padding:1em 1.5em;margin:1.5em 0;}code{padding:.15em .5em;}table{font-size:.85em;}@media screen and (max-width:600px){.contents{line-height:2;padding:.5em 0 .5em 2em;background:#fafafa;font-size:small;border-radius:.5em}}.card-panel th{text-align:center}dd,dl.inline dd{margin-left:2em}</style>
<h2><span class="chip mag_rt05 blue white-text">やるべき</span>練習しておかないと意図がわからない過去問</h2>
<div class="card-panel mag_h30">
問 1　(平成 21 年度 春期)</p>
<p>数値を 2 進数で格納するレジスタがある。 このレジスタに正の整数 x を設定した後， &#8220;レジスタの値を 2 ビット左にシフトして， x を加える&#8221; 操作を行うと，レジスタの 値は x の何倍になるか。 ここで，あふれ (オーバフロー) は，発生しないものとする。</p>
<p>ア　3　　イ　4　　ウ　5　　<br class="hide-on-med-and-up">エ　6
</div>
<div class="chip">解説</div>
<p>この問題を「やるべき」と判断したのは、<span class="bold">練習しておかないと「いったい何がいいたいの？」という感じで、出題の意図がわからない</span> からです。</p>
<p>この問題の意図は、<span class="u">「左シフトと加算で任意の倍数を作れることを知っていますか？」</span>ということです。</p>
<p>&nbsp;</p>
<p>コンピュータの内部では、データが 2 進数で取り扱われています。</p>
<p>2 進数は、左にシフト（上位桁にずらす）と、 2 倍、 4 倍、 8 倍、 16 倍、・・・というように 2 のべき乗の値になります。</p>
<p>3 倍、 5 倍、 6 倍、 7 倍、 9 倍のような、 <soan class="u">2 のべき乗でない倍数を得たい場合は、シフト と 加算 を組合せます</soan>。</p>
<p>&nbsp;</p>
<p>問題に示されたレジスタとは、 CPU の内部にあるデータ格納領域のことで、わかりやすくいえば、データを入れる箱のことです。  「あふれ（オーバーフロー）は、発生しないものとする」という但し書きは、レジスタのサイズを気にしなくてよいということです。</p>
<p>ここでは、レジスタに x （何らかの値）を格納し、それを 2 ビット左にシフトして 4 倍にして、さらに x を加算しているのですから、 <code>4 倍 + 1 倍 = 5 倍</code> になります。 ただ、それだけの問題です。</p>
<p>わかってしまえば簡単ですが、練習しておかないとできないでしょう。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　ウ</p>
<h2><span class="chip mag_rt05 red white-text">やる必要がない</span>言葉の意味から常識的に判断して解ける過去問</h2>
<div class="card-panel mag_h30">
問 28　(平成 21 年度 春期)</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>この問題は、「一貫性」という<span class="bold">言葉の意味から常識的な判断をすれば、正解を選ぶことができます。</span>したがって、やる必要はありません。</p>
<p>「一貫性」をわかりやすい言葉で言い換えると、「全部同じ」ということです。 したがって、正解は、「どの画面においても操作ボタンの表示位置や形を同じにする」というウです。</p>
<p>さあ、こんな問題には、時間を割かずに、やるべき問題に進みましょう。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　ウ</p>
<h2><span class="chip mag_rt05 blue white-text">やるべき</span>計算方法を練習しておかないと手が動かない過去問</h2>
<div class="card-panel mag_h30">
問 9　(平成 21 年度 春期)</p>
<p>平均命令実行時間が 20 ナノ秒のコンピュータがある。 このコンピュータの性能は何 MIPS か。</p>
<p>ア　75　　イ　10　　<br class="hide-on-med-and-up">ウ　20　　エ　150
</div>
<div class="chip">解説</div>
<p><span class="bold">計算問題の中でも、よく出るものは、やるべき問題</span>です。 なぜなら、計算方法を練習しておかないと、実際の試験で手が動かない（計算方法を見出せない）からです。</p>
<p>基本情報技術者試験には、<span class="bold">公式を丸暗記しないとできない計算問題は出たことがありません</span>。 この問題も、もちろん公式は不要です。</p>
<p>&nbsp;</p>
<p>それでは、どうやって解くのかというと、問題文に示された「 MIPS（ミップス）」という言葉の意味を覚えて、そこから計算手法を見出すのです。</p>
<p>&nbsp;</p>
<p>MIPS は、Million Instructions Per Second（百万命令 / 秒）という意味で、コンピュータの処理能力の尺度のひとつです。 1 秒間に実行できる命令の数を百万単位で示します。</p>
<p>ここでは、 1 つの命令を実行する時間が 平均 20 ナノ秒 なので、 1 秒間に 1 ÷ 20 ナノ個の命令を実行できます。</p>
<p><span class="bold">ナノは、 10<sup>-9</sup> ですから、 <code>1 ÷ ( 20 × 10<sup>-9</sup> )</code>という計算をすればよいのですが、これを練習しておいてほしのです。</span></p>
<p>最終的な結果を百万単位、つまり 10<sup>6</sup> 単位で得ることに注意してください。</p>
<pre>
1 ÷（ 20 × 10<sup>-9</sup> ）
=（ 1 × 10<sup>9</sup> ）÷ 20
=（ 1 × 10<sup>3</sup> × 10<sup>6</sup> ）÷ 20
=（ 1000 × 10<sup>6</sup> ）÷ 20
= 50 × 10<sup>6</sup>
</pre>
<p>になります。</p>
<p>これは、 50 MIPS です。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　エ</p>
<div class="divider mag_tp40 mag_bt10"></div>
<p class="grey-text small-text"><i class="material-icons mag_rt05">info_outline</i>MIPS など計算方法がわかる連載</p>
<p><a href="../../easy_calc/"></p>
<div class="row valign-wrapper pad_w20">
<div class="col s3 m2 flex pad_00"><img src="../../wp-content/uploads/2020/01/easy_calc_cover-300x169.jpg" width="640" height="360" /></div>
<div class="col s9 m10 pad_10 blue-grey-text"><span class="bold">苦手克服！かんたん計算問題</span><br /><span class="small-text">多くの受験者が苦手意識を持っている「計算問題」が「かんたん」と感じられるよう、計算方法をデフォルメしながら説明します。</span>
</div>
</div>
<p></a></p>
<div class="divider mag_bt40 mag_tp10"></div>
<h2><span class="chip mag_rt05 red white-text">やる必要がない</span>問題に示された通りの項目に分類すれば解ける過去問</h2>
<div class="card-panel mag_h30">
問 60　(平成 21 年度 春期)</p>
<p>IT 統制を予防統制と発見統制に分類した場合，データ入力の誤りや不正の発見統制に該当するものはどれか。</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>問題文に「予防と発見に分類した場合」と示されているのですから、 4 つの選択肢は「予防」と「発見」のいずれかに分類できるはずです。 さらに、問題文には、「発見」とは「データの入力の誤りや不正の発見」であるというヒントも示されています。</p>
<p>このヒントを頼りにして、常識的な判断で選択肢を「予防」と「発見」に分類すれば、 1 つだけが「発見」になるはずです。 これには、<span class="bold">専門知識が一切不要なので、やる必要がない</span>問題です。</p>
<dl class="mag_h30 inline">
<dt>ア</dt>
<dd>「操作ミスを起こしにくいように設計」ですから、予防でしょう。 </dd>
<dt>イ</dt>
<dd>「出力と入力を照合」ですから、ヒントに示された「データの入力の誤りや不正の発見」でしょう。 </dd>
<dt>ウ</dt>
<dd>「アクセス権限の付与」ですから、権限の有無で予防するのでしょう。 </dd>
<dt>エ</dt>
<dd>「教育」ですから、教育で得た知識で予防するのでしょう。 </dd>
</dl>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　イ</p>
<h2><span class="chip mag_rt05 blue white-text">やるべき</span>丸暗記ではなく、仕組みを知って楽しく覚えてほしい過去問</h2>
<div class="card-panel mag_h30">
問 25　(平成 21 年度 春期)</p>
<p>図に示す 1 けたの 2 進数 x と y を加算し， z ( 和の 1 けた目) 及び c ( けた上げ) を出力する半加算器において， A と B の素子の組合せとして，適切なものはどれか。</p>
<figure>
<img class="z-depth-5 hoverable materialboxed" style="margin:auto;" data-caption="平成 21 年度 春期 問 25 図" src="../../wp-content/uploads/2019/03/q25_figure.png" alt="" loading="lazy" /><br />
</figure>
<table class="responsive-width centered">
<thead>
<tr>
<th></th>
<th>A</th>
<th>B</th>
</tr>
</thead>
<tbody>
<tr>
<th>ア</th>
<td>排他的論理和</td>
<td>論理積</td>
</tr>
<tr>
<th>イ</th>
<td>否定論理積</td>
<td>否定論理和</td>
</tr>
<tr>
<th>ウ</th>
<td>否定論理和</td>
<td>排他的論理和</td>
</tr>
<tr>
<th>エ</th>
<td>論理積</td>
<td>論理和</td>
</tr>
</tbody>
</table>
</div>
<div class="chip">解説</div>
<p>半加算器の問題は、よく出るので、確実に覚えてください。</p>
<p>ただし、「半加算器の 桁上がりは AND 演算で、和 は XOR 演算である」という丸暗記ではいけません。 なぜなら、丸暗記は、つまらなくて、忘れやすいからです。</p>
<p><span class="bold">ちゃんと仕組みを知って覚えれば、楽しくて、忘れない</span>はずです。</p>
<p>&nbsp;</p>
<p>半加算器は、 1 桁の 2 進数 を 2 つ足します。</p>
<p>1 桁の 2 進数は、0 と 1 だけなので、それらを足すパターンは、以下の 4 通りです。</p>
<table class="striped centered mag_h30 responsive-width">
<thead>
<tr>
<th>x</th>
<th>y</th>
<th>c</th>
<th>z</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
<p>この問題では、足す数に x と y 、桁上がりに c 、和に z という名前を付けています。</p>
<p>このパターンを書けるように練習しておけば、丸暗記しなくても「半加算器の 桁上がりは AND 演算で、和 は XOR 演算である」と覚えられます。</p>
<p>&nbsp;</p>
<p>問題の選択肢は、AND や XOR などの 論理演算 を日本語で示しています。</p>
<p>この機会に、これらも覚えておきましょう。</p>
<p>まず、基本的な論理演算である <span class="bold">AND 、OR 、NOT を「論理積」「論理和」「論理否定」と呼ぶ</span>ことを覚えてください。</p>
<p>そうすれば、</p>
<dl class="background c-round">
<dt class="bold">XOR</p>
<dt>
<dd>排他的（ eXclusive ）論理和（ OR ）</dd>
<dt class="bold">NAND</p>
<dt>
<dd>否定（ Not ）論理積（ AND ）</dd>
<dt class="bold">NOR</p>
<dt>
<dd>否定（ Not ）論理和（ OR ）</dd>
</dl>
<p>と呼ぶことも、簡単に覚えられます。</p>
<p>&nbsp;</p>
<p>正解は、<span class="blank">A</span> が排他的論理和で <span class="blank">B</span> が論理積となっているアです。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　ア</p>
<p class="mag_h30 blue-grey-text"><i class="material-icons light-blue-text mag_rt05">search</i>タグで関連記事をチェック <a href="../../tag/論理回路/" class="tag z-depth-1 hoverable">論理回路</a></p>
<h2><span class="chip mag_rt05 red white-text">やる必要がない</span>英語の意味かニュアンスがわかれば答えを選べる過去問</h2>
<div class="card-panel mag_h30">
問 69　(平成 21 年度 春期)</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>基本情報技術者試験には、<span class="bold">「これは、英語の試験なのか？」と皮肉を言いたくなるような問題が出る</span>ことがあります。 そういう問題は、やる必要がありません。</p>
<p>この問題は、「ニッチ（ niche ）」という英語の意味かニュアンスがわかれば、正解を選べます。 「ニッチ市場」という言葉を聞いたことがあるのでしょう。 これは、大企業がターゲットとしない小規模な市場という意味です。</p>
<p>&nbsp;</p>
<p>この問題では、「ニッチ戦略」という言葉なので、選択肢の中では「他社が参入しにくい特定の市場に対して専門化」が適切です。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　ウ</p>
<h2><span class="chip mag_rt05 blue white-text">やるべき</span>SQL が苦手なら過去問の範囲に絞って SQL を覚える</h2>
<div class="card-panel mag_h30">
問 33　(平成 21 年度 春期)</p>
<p>関係データベースの &#8220;製品&#8221; 表と &#8220;売上&#8221; 表から，売上報告のビュー表を定義する SQL 文中の a に入るものはどれか。</p>
<pre>
<code class="language-sql">CREATE VIEW 売上報告(製品番号, 製品名, 納品数, 売上年月日, 売上金額)
　　AS '[　　a　　]' 製品.製品番号, 製品.製品名, 売上.納品数, 売上.売上年月日,
　　売上.納品数 * 製品.単価
　　　　FROM 製品, 売上
　　　　WHERE 製品.製品番号 = 売上.製品番号</code>
</pre>
<p><span class="hide-on-med-and-up grey-text small-text"><i class="material-icons mag_rt05">info</i>SQL 文は右にスクロールできます</span></p>
<table class="bordered responsive-width mag_h30">
<thead>
<tr>
<th width="25%">表名</th>
<th>列名</th>
</tr>
</thead>
<tbody>
<tr>
<td>製品</td>
<td>製品番号, 製品名, 単価</td>
</tr>
<tr>
<td>売上</td>
<td>製品番号, 納品数, 売上年月日</td>
</tr>
</tbody>
</table>
<p>ア　GRANT　　イ　INSERT　　<br class="hide-on-med-and-up">ウ　SCHEMA　　エ　SELECT
</div>
<div class="chip">解説</div>
<p>データベースの分野では、SQL の問題がよく出題されます。</p>
<p>もしも、<span class="bold">SQL が苦手なら、過去問の範囲に絞って</span> SQL を覚えましょう。 そうする方が、体系立てて SQL を学ぶより効率的です。 過去問題は、何度も再利用されているからです。</p>
<p>&nbsp;</p>
<p>この問題からは、</p>
<ul class="background c-round">
<li>データを取得する SELECT 命令に <span class="bold">名前を付けて保存したものを「ビュー」</span>と呼ぶこと</li>
<li>ビューを作成するには <code class="language-sql">CREATE VIEW ビューの名前 AS SELECT 命令</code> という構文を使うこと</li>
<li>そして問題の穴埋めの答えが「 SELECT 」であること</li>
</ul>
<p>を覚えてください。</p>
<p>後で同じ問題に遭遇した時に、「この問題やったことある！」と思い出してスラスラできるはずです。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　エ</p>
<p class="mag_h30 blue-grey-text"><i class="material-icons light-blue-text mag_rt05">search</i>タグで関連記事をチェック <a href="../../tag/SQL/" class="tag z-depth-1 hoverable">SQL</a></p>
<h2><span class="chip mag_rt05 red white-text">やる必要がない</span>消去法で簡単に答えを選べる過去問</h2>
<div class="card-panel mag_h30">
問 70　(平成 21 年度 春期)</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>「成長期」に適した選択肢を選べば OK という問題なので、やる必要はありません。 もしも、選べないなら、「これは違う」というものを消してください。 いわゆる「消去法」です。</p>
<dl class="mag_h30 inline">
<dt>ア</dt>
<dd>「商品の価値を理解し始める」ですから、成長期に適している感じがします。 </dd>
<dt>イ</dt>
<dd>「製品の差別化や市場の細分化が明確」ですから、成長期よりずっと後でしょう。 </dd>
<dt>ウ</dt>
<dd>「需要が減る」のですから、これも成長期ではないのでしょう。 </dd>
<dt>エ</dt>
<dd>「新規需要開拓が勝負」とあるので、成長期より前でしょう。 </dd>
</dl>
<p>このように判断して、簡単に正解をアに絞れます。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　ア</p>
<h2><span class="chip mag_rt05 blue white-text">やるべき</span>お決まりの注目ポイントがある過去問</h2>
<div class="card-panel mag_h30">
問 36 (平成 21 年度 春期)</p>
<p>1.5 M ビット/秒の伝送路を用いて 12 M バイトのデータを転送するために必要な伝送時間は何秒か。 ここで，回線利用率を 50% とする。</p>
<p>ア　16　　イ　32　　<br class="hide-on-med-and-up">ウ　64　　エ　128
</div>
<div class="chip">解説</div>
<p>ネットワークの伝送時間を求める計算問題です。 この問題には、お決まりの注目ポイントが 2 つあります。 それを覚えてほしいので、やるべき問題です。</p>
<ul class="background c-round">
<p class="indigo-text post-title mag_tp00">伝送時間を求める計算問題 2 つのポイント</p>
<li><span class="bold">ビット単位の伝送速度と、バイト単位のデータ量が混在</span> しているので、どちらかに揃えて計算すること</li>
<li>伝送速度は、 100 %の能力を使えるものではないので、 <span class="bold">回線利用率を考慮した値で計算</span> すること
</ul>
<p>ここでは、伝送速度 が 1.5 M ビット/秒、データ量 が 12 M バイト、回線利用率 が 50% です。</p>
<p>8 ビット = 1 バイト なので、</p>
<p><span class="u">伝送速度 を 8 で割れば バイト単位</span> になり、<br />
<span class="u">データ量 を 8 倍すれば ビット単位</span> になります。</p>
<p>計算が簡単なのは、データ量を 8 倍することの方なので、データ量を <code>12 M バイト = 12 × 8 = 96 M ビット</code> として、ビット単位に揃えて計算することにしましょう。</p>
<p>伝送速度の 1.5 M ビット/秒 は、回線利用率 が 50 %なので、実際には <code>1.5 M × 0.5 = 0.75 M ビット / 秒</code>です。</p>
<p>データのサイズが 96 M ビット で、実際の伝送速度 が 0.75 M ビット / 秒 なのですから、伝送時間は、 <code>96 M ÷ 0.75 M = 128 秒</code> です。</p>
<p>「よくわかんな～い！」なら、わかるまで何度も練習してください。 <span class="bold">やるべき問題は、わかるまでやるべき問題です。</span></p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　エ</p>
<p class="mag_h30 blue-grey-text"><i class="material-icons light-blue-text mag_rt05">search</i>タグで関連記事をチェック <a href="../../tag/伝送時間/" class="tag z-depth-1 hoverable">伝送時間</a></p>
<h2><span class="chip mag_rt05 red white-text">やる必要がない</span>様々なパターンで出題されても正解を選べる過去問</h2>
<div class="card-panel mag_h30">
問 79 (平成 21 年度 春期)</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><span class="bold">特許権は「発明」、実用新案権は「アイディア」、商標権は「企業のマーク」、意匠権は「製品のデザイン」というイメージ</span>です。</p>
<p>&nbsp;</p>
<p>この問題は、特許権がテーマなので、選択肢の中で「アイディア」や「企業のマーク」や「製品のデザイン」よりも「発明」にふさわしいものを選べば OK です。 正解は、「発明」という言葉があるアです。</p>
<div class="divider"></div>
<p><span class="chip mag_rt05">解答</span>　ア</p>
<p>&nbsp;</p>
<div class="divider mag_h50"></div>
<p>第 1 回の今回は、連載の趣旨を示し、古い平成 21 年春期を題材にして、やるべき問題の例と、やる必要がない問題の例を示しました。</p>
<p>次回以降は、現時点で最新の平成 30 年秋期試験から新しい順に、やるべき問題と解き方を掲載して、大全集を作り上げたいと思います。</p>
<p>ちまたには、年度ごとにすべての問題を解説した Web ページがいくつかありますが、やるべき問題を厳選するという試みは、おそらく他にはない大きな特徴だと思います。</p>
<p>この厳選問題集が、受験者の皆様のお役に立てば幸いです。</p>
<h2>「厳選5題」過去問 問題集</h2>
<div class="divider"></div>
<p><a href="../r01_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">令和元年 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>増分バックアップと差分バックアップの違いを覚えよう</li>
<li>SQL のグループ化のポイントをつかもう</li>
<li>この機会に CSMA/CD という長い略語の意味を覚えよう</li>
<li>試験によく出るネットワーク構成を知っておこう</li>
<li>テストにおけるスタブとドライバの役割を知っておこう</li>
</ol></div>
</div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h31_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成31年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>dpi の意味がわかれば計算できます</li>
<li>オープンソースの定義を知っておこう</li>
<li>GUI部品の種類と用途を知っておこう</li>
<li>すべて0とすべて1が、ホストアドレスに使えない理由を知っておこう</li>
<li>ROIは、ROIという言葉が計算方法を示しています</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h30_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成30年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>えっ、小数点以下の 16 進数も出るの？ 出るから練習しておこう！</li>
<li>よく出る「命令ミックス」を覚えておきましょう</li>
<li>これこそ教わらなければわかならい問題だ</li>
<li>アローダイアグラムでは、ダミー作業に注意せよ</li>
<li>この問題ができれば、たいがいの期待値の問題ができます</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h30_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成30年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>ナニコレ？ と思ったら練習しておこう</li>
<li>丁寧に学習して IP アドレスの苦手意識を克服しよう</li>
<li>できる！ と思っても、うっかり間違いをしないように絵を書こう</li>
<li>問題の意味がわかれば、楽勝！ 楽勝！</li>
<li>知らない用語に遭遇したら、言葉の意味から判断せよ！</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h29_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成29年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>とってもよく出る MTBF と MTTR の意味をしっかり覚えよう</li>
<li>この問題で、スタックの特徴だけでなく用途を知るべし</li>
<li>「待ち状態」と「実行待ち状態」の意味は、実にわかりにくい！</li>
<li>これは、用語や仕組みがわらないと計算できない問題です</li>
<li>これも、用語や仕組みがわらないと計算できない問題です</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h29_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成29年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>この表記は何だろう？ そう思ったなら練習しておこう</li>
<li>RAID 0、RAID 1、RAID 5 の仕組みを知っておこう</li>
<li>直列と並列の稼働率の求め方は、丸暗記ではなく理屈で覚えよう</li>
<li>基本情報技術者試験には、公式の暗記が必要な問題は出題されません</li>
<li>自分流に工夫して OSI 基本参照モデルとネットワーク機器の対応を覚えよう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h28_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成28年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>AND によるビット演算のイメージをつかんでおこう</li>
<li>今後の試験で出題比率が多くなる「数学」の問題をやっておこう</li>
<li>2 のべき乗は指折り数えて計算しよう</li>
<li>A / D 変換に関する 3 つの用語をまとめて覚えよう</li>
<li>とにかくよく出る FIFO 、LRU 、LFU の意味をしっかり覚えよう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h28_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成28年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>文字列の正規表現の問題は、教わればできます</li>
<li>音声のサンプリングの計算方法も、教わればわかります</li>
<li>割り算が引き算の繰り返しで実現できることも、教われば納得できます</li>
<li>「何これ？」という問題ですが、教わって覚えてください</li>
<li>計算方法をお教えしますので、暗記でなく仕組みで覚えてください</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h27_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成27年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>2のべき乗を見たら「ビビッ！」と感じてください</li>
<li>公式があるのかな？ と考えずに、地道に経路のパターンを数えよう</li>
<li>花文字の回転は、 2 つの解き方のわかりやすい方を使おう</li>
<li>セクタとブロック、ディスクの構造を知っておこう</li>
<li>この問題で SQL の集約関数をまとめて覚えよう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h27_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成27年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>SRAMとDRAMの特徴は、両者の比較で覚えよう</li>
<li>何か変な問題？ でも何度も出題されています！</li>
<li>オブジェクト指向の「汎化」の考え方と用語を覚えよう</li>
<li>SWOT 分析の問題は、略語の意味がわかればわかります！</li>
<li>B 、 C 、G も、略語の意味がわかればわかります！</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h26_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成26年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>逆ポーランド表記法は、決して難しくありません</li>
<li>別名を知れば、内部割込みと外部割込みを簡単に区別できます</li>
<li>実効アクセス時間の計算は、期待値の計算です</li>
<li>論理回路の問題は、効率的に解ける入力パターンを考えよう</li>
<li>関係データベースでなくても、データをたどれるかどうかがポイントです</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h26_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成26年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>小数点以下 4 桁まで、 2 進数の桁の重みを書き出してみよう</li>
<li>この問題を通して、関係データベースの「掟（おきて）」を知っておこう</li>
<li>選択肢の SQL 文の違いに注目して消去法で答えを絞り込もう</li>
<li>トランザクションの ACID 特性は、自分流のわかりやすい説明で覚えよう</li>
<li>JIS の定義からセキュリティの本質がわかる</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h25_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成25年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>見かけは難しそうですが、実はとっても簡単な問題です</li>
<li>共有ロックと専有ロックの違いを知っておこう</li>
<li>略語の問題を練習するときには、 2 つのポイントがあります</li>
<li>ネットワークの階層とは、どういうことかを知ってください</li>
<li>クラスの関連付けの表記方法をまとめて覚えよう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h25_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成25年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>アルゴリズムをしっかりと丁寧に覚えてください</li>
<li>ハッシュ法に関する用語をまとめて覚えよう</li>
<li>メモリのアドレス指定方式をまとめて覚えよう</li>
<li>こういう問題こそ練習しておくべきです</li>
<li>ディジタル署名におけるハッシュ関数の意味も知っておこう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h25_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成24年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>2 の補数表現と算術右シフトをマスターしよう</li>
<li>探索アルゴリズムの計算量のオーダを覚えよう</li>
<li>ビット数とコードのイメージをつなげよう</li>
<li>仮想記憶のページインとページアウトを手作業で練習しておこう</li>
<li>関係データベースの参照の整合性の意味を覚えよう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h24_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成24年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>自分流に具体例を書けばイメージをつかめます</li>
<li>事前にしっかりと練習しておけば試験当日に焦りません</li>
<li>ハードウェアの問題は 2 進数の問題です</li>
<li>算数の文章問題の大人版だと思って解いてください</li>
<li>花形、金のなる木、問題児、負け犬は、そう呼ばれる理由で覚えよう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h23_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成23年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>バッカス・ナウア記法の読み方を知っておこう</li>
<li>論理式をベン図で表す練習をしておこう</li>
<li>パスワードの盗用を防止する方法を知っておこう</li>
<li>ウイルスを検出する様々な方法を知っておこう</li>
<li>ソフトウェア開発手法の種類を知っておこう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h23_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成23年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>これは、ド・モルガンの法則だ！</li>
<li>状態遷移表で文字列の形式を検査する方法を覚えておこう！</li>
<li>伸びて行くから「木」なのです！</li>
<li>計算問題への苦手意識を克服しよう！(その 1 )</li>
<li>計算問題への苦手意識を克服しよう！(その 2 )</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h22_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成22年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>誤差の名称を具体例に対応付けて覚えよう！</li>
<li>確率の乗法定理と加法定理の使い方を覚えよう！</li>
<li>磁気ディスク装置のデータ読み取り時間の計算方法のポイントを知ろう！</li>
<li>英語の意味と対応付けて、リーダ、チャレンジャ、フォロワ、ニッチャの戦略を区別しよう！</li>
<li>日本語の意味どおりに、導入期、成長期、成熟期、衰退期の戦略を判断しよう！</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h22_spring/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成22年度 春期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>CPU がカチカチ信号で動作しているイメージをつかもう</li>
<li>ターンアラウンドタイムの意味を知っていればわかります</li>
<li>落ち着いてやってみれば、とっても簡単な計算です</li>
<li>この問題で第3正規形かどうかを判断する方法を覚えよう</li>
<li>M や N を使った式は、具体例を想定すればわかります</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p><a href="../h21_autumn/"></p>
<div class="mag_00 row">
<div class="col m3 post-title mag_h10 pad_00">平成21年度 秋期</div>
<div class="col m9 pad_00">
<ol class="contents mag_00">
<li>CUI 環境でディレクトリを指定する方法を知っておこう</li>
<li>半加算器と全加算器の違いを知っておこう</li>
<li>サブネットマスクとCIDR表記の対応を知っておこう</li>
<li>UMLのクラス図とシーケンス図の役割を知っておこう</li>
<li>カプセル化、継承、多態性の意味を知っておこう</li>
</ol></div>
</p></div>
<p></a></p>
<div class="divider"></div>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/how2judge_nesessary_unnesessary/">やるべき or やる必要がない過去問の見分け方「厳選5題」過去問と解説シリーズ</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>過去問の解き方知りたいぜ &#124; よく出る「鉄板問題」を解説</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon_tokikata/common_problems/</link>
		<pubDate>Mon, 26 Nov 2018 04:51:47 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[アローダイアグラム]]></category>
		<category><![CDATA[出題傾向]]></category>
		<category><![CDATA[学習方法]]></category>
		<category><![CDATA[稼働率]]></category>
		<category><![CDATA[論理回路]]></category>
		<category><![CDATA[過去問の解き方]]></category>

		<guid isPermaLink="false">http://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=kakomon_tokikata&#038;p=605</guid>
		<description><![CDATA[<p>基本情報技術者試験には、頻繁に出題されている問題がいくつかあります。それらの中には、あらかじめ十分に練習しておかないと解けない問題もあります。 ここでは、そのような問題を 「鉄板問題」 と呼び、解き方のポイントを説明しま [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon_tokikata/common_problems/">過去問の解き方知りたいぜ | よく出る「鉄板問題」を解説</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>ここでは、そのような問題を <span class="bold">「鉄板問題」</span> と呼び、解き方のポイントを説明します。</p>
<p>午前試験の過去問題を例として取り上げますが、午後試験の対策にもなるはずです。午後試験の問題は、午前試験の知識を事例に仕立てたものだからです。</p>
<style>table{font-size:.85em;}img{vertical-align:middle;}</style>
<h2>全 19 回中 16 回も出題された問題がある</h2>
<p>拙著<a href="https://www.shoeisha.co.jp/book/detail/9784798159171">「情報処理教科書 出るとこだけ！基本情報技術者 テキスト＆問題集 2019 年版」</a>（翔泳社刊）」の中には、「試験によく出る問題と用語 Top 100 」という資料が掲載されています。</p>
<p>これは、現行の試験制度になった平成 21 年度 春期から平成 30 年度 春期までの全 19 回の午前試験を、独自に調査したものです。</p>
<p>以下は、それらの中から 10 回以上（ 50 % 以上）の頻度で出題された問題を抜粋したものです。</p>
<figure>
<table class="striped responsive-width">
<thead>
<tr>
<th>順位</th>
<th>回数</th>
<th>テーマ</th>
<th>分野</th>
</tr>
</thead>
<tbody>
<tr>
<td>1 位</td>
<td>16 回</td>
<td>
<ul>
<li>MIL 記号による論理演算</li>
<li>アローダイアグラムの使い方</li>
<li>稼働率の計算</li>
</ul>
</td>
<td>
<ul>
<li>T</li>
<li>M</li>
<li>T</li>
</ul>
</td>
</tr>
<tr>
<td>2 位</td>
<td>13 回</td>
<td>リピータ、ブリッジ、ルータの説明</td>
<td>T</td>
</tr>
<tr>
<td>3 位</td>
<td>12 回</td>
<td>
<ul>
<li>SQL の SELECT 文</li>
<li>工数の計算</li>
<li>伝送時間の計算</li>
</ul>
</td>
<td>
<ul>
<li>T</li>
<li>M</li>
<li>T</li>
</ul>
</td>
</tr>
<tr>
<td>4 位</td>
<td>11 回</td>
<td>著作権の対象</td>
<td>S</td>
</tr>
<tr>
<td>5 位</td>
<td>10 回</td>
<td>再帰呼び出しの仕組み</td>
<td>T</td>
</tr>
</tbody>
</table><figcaption class="grey-text center small-text mag_h10"><i class="material-icons">info</i> 分野：T ＝ テクノロジ系、M ＝ マネジメント系、S ＝ ストラテジ系</figcaption></figure>
<p>何とビックリ！ <span class="bold">全 19 回中 16 回（約 84 % ）も出題された問題があります。</span></p>
<ul class="background c-round bold mag_h30">
<li>MIL 記号による論理演算</li>
<li>アローダイアグラムの使い方</li>
<li>稼働率の計算</li>
</ul>
<p>というテーマの問題です。これらは、あらかじめ十分に練習しておかないと解けないので、正に「鉄板問題」だといえます。</p>
<p>絶対に解き方を覚えておくべきです。例題を示しますので、一緒にやってみましょう。</p>
<h2>「 MIL 記号による論理演算」の例題と解説</h2>
<p>最初に紹介する鉄板問題は、「 MIL 記号 による論理演算」です。</p>
<p>「 MIL 記号（ミルきごう）」とは、AND や OR などの論理演算を行う電子回路を図示する記号で、米国の軍事規格（ MIL は、military ＝ 軍事という意味）で定められたものです。</p>
<p>午前試験の問題用紙の冒頭に、MIL 記号 が一覧表示されていますが、よく出題される AND、OR、XOR、NOT、NAND、NOR の MIL 記号 は、あらかじめ覚えておきましょう。</p>
<table class="bordered mag_h50 responsive-width">
<thead>
<tr>
<th class="center">図記号</th>
<th>説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_and.png"></td>
<td>論理積素子( AND )</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_nand.png"></td>
<td>否定論理積素子( NAND )</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_or.png"></td>
<td>論理和素子( OR )</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_nor.png"></td>
<td>否定論理和素子( NOR )</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_xor.png"></td>
<td>排他的論理和素子( XOR )</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_xnor.png"></td>
<td>論理一致素子</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_buffer.png"></td>
<td>バッファ</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_not.png"></td>
<td>論理否定器( NOT )</td>
</tr>
<tr>
<td class="center"><img src="../../wp-content/uploads/2018/11/icon_state_buffer.png"></td>
<td>スリーステートバッファ</td>
</tr>
</tbody>
</table>
<p><span class="bold">MIL 記号 は、難しそうに見えますが、オデンの具だと思えば可愛いものです。</span></p>
<p>AND <img src="../../wp-content/uploads/2018/11/icon_and.png"> は、カマボコです。<br />
OR <img src="../../wp-content/uploads/2018/11/icon_or.png"> は、サツマアゲです。<br />
XOR <img src="../../wp-content/uploads/2018/11/icon_xor.png"> は、サツマアゲをかじったものです。<br />
NOT <img src="../../wp-content/uploads/2018/11/icon_not.png"> は、コンニャクの先にギンナンが付いたものです。</p>
<p>このギンナン（小さな白丸）は、データを反転（ 0 を 1 に、1 を 0 に）することを意味します。</p>
<p>カマボコの先にギンナンを付けると、AND の反転で NAND <img src="../../wp-content/uploads/2018/11/icon_nand.png"> になります。<br />
サツマアゲの先にギンナンを付けると、OR の反転の NOR <img src="../../wp-content/uploads/2018/11/icon_nor.png"> になります。</p>
<p>どの MIL 記号にも、ご丁寧に串が刺してあります。この串 1 本で、1 ビットのデータが伝えられます。</p>
<p>図記号の左側から入力されたデータが、素子の中で論理演算され、その結果が右側から出力されます。</p>
<p>&nbsp;</p>
<p>以下は、「 MIL 記号 による論理演算」の例題（平成 28 年度 春期 問 23 ）です。</p>
<p>問題に示された論理回路は、NAND を組合わせて作られていますが、この論理回路は、選択肢に示された OR（ア）、AND（イ）、XOR（ウ）、NOR（エ）と同じ機能になります。</p>
<p>様々な論理演算を NAND を組合わせた論理回路で実現することを「 NAND 変換」と呼びます。</p>
<div class="card-panel">
問 23 (平成 28 年度 春期 問 23 )</p>
<p>図の論理回路と等価な回路はどれか。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/q23_figure-1.png"></p>
<p>ア　<img src="../../wp-content/uploads/2018/11/q23_option_a.png">　　<br class="hide-on-med-and-up">イ　<img src="../../wp-content/uploads/2018/11/q23_option_i.png">　　<br class="hide-on-med-and-up">ウ　<img src="../../wp-content/uploads/2018/11/q23_option_u.png">　　<br class="hide-on-med-and-up">エ　<img src="../../wp-content/uploads/2018/11/q23_option_e.png">
</div>
<p>&nbsp;</p>
<p>「 MIL 記号による論理演算」の問題には、効率的に解く方法（回路図や演算式を変形してシンプルにする方法）がある場合がありますが、少し時間がかかっても確実に解ける方法は、 <span class="bold">具体的なデータを想定すること</span> です。</p>
<div class="card grey lighten-5 z-depth-0 c-round">
<div class="card-content indigo-text">
<h3 class="mag_h10 bold">論理演算 (論理回路) 問題の解き方</h3>
<p>具体的なデータを想定する ( 1 つのデータで選択肢を絞れない場合は、別のデータを想定する)
</p></div>
</div>
<p>この問題に示された論理回路には、A と B という 2 つの入力があって、Y という 1 つの出力があります。</p>
<p>A と B に具体的なデータを想定して、Y が何になるかを調べてみましょう。</p>
<p>選択肢の中で、それと同じ結果にならないものを消していって、残ったものが正解です。1 つのデータでは、選択肢を 1 つに絞れないなら、別のデータで調べてください。</p>
<p>&nbsp;</p>
<p>まず、A に 0 、B に 1 というデータを想定してみましょう。</p>
<p>以下のように、Y の値は、1 になります。この結果は、イ の AND と エ の NOR と同じではないので、答えをアの OR と、ウの XOR に絞れます。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/q23_figure.png" alt="" /></p>
<p>&nbsp;</p>
<p>OR と XOR の違いは、2 つの入力の両方が 1 のとき、OR では 結果が 1 になりますが、XOR では 結果が 0 になることです。</p>
<p>そこで、A に 1 、B に 1 というデータを想定してみましょう。</p>
<p>以下のように、Y の値は、0 になります。この結果は、アの OR とは違うので、答えをウの XOR に絞れます。実際の正解も ウ です。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/q23_figure2.png" alt="" /></a></p>
<p><i class="material-icons indigo-text mag_rt05">label</i>関連タグ<a class="tag mag_lt10" href="../../tag/論理回路">論理回路</a></p>
<h2>「アローダイアグラムの使い方」の例題と解説</h2>
<p>次に紹介する鉄板問題は、「アローダイアグラムの使い方」です。</p>
<p>「アローダイアグラム（ arrow diagram ＝ 矢印の図）」とは、プロジェクトを構成する作業の流れを示したものです。</p>
<p>以下は、例題（平成 23 年度 秋期 問 51 ）です。矢印で作業を示します。</p>
<p>矢印に添えられた A 、B 、C などは 作業名 であり、3 、2 、1 などは 作業の所要日数 です。作業と作業のつなぎ目を「結合点」と呼び、円で示します。円の中にある数字は、結合点の番号です。</p>
<p>破線で示された矢印は、「ダミー作業」と呼ばれ、そこに 所要日数 0 日の作業がある と考えます。作業のつなぎ方によって、ダミー作業が必要になる場合があります。</p>
<p>問題を解くときに、ダミー作業に 0 という数字を書き添えるとよいでしょう。</p>
<div class="card-panel">
問 51　(平成 23 年度 秋期)</p>
<p>次のアローダイアグラムで表されるプロジェクトがある。結合点 5 の最早結合点時刻は第何日か。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/h23_q51_figure.png
" alt="" /></p>
<p>ア　4　　イ　5　　ウ　6　　エ　7
</p></div>
<p>&nbsp;</p>
<p>アローダイアグラムから求められるのは、<span class="bold">「プロジェクトが最短で何日で完了するか」</span>と<span class="bold">「クリティカルパス（ critical path ＝ 重要な道筋）」です。</span></p>
<p>&nbsp;</p>
<p>まず、図を左から右に（スタートからゴールに向かって）たどって、それぞれの結合点に「最早結合点時刻（最も早くて、いつから始められるか）」を書き込んでいくと、「プロジェクトが最短で何日で完了するか」を求められます。</p>
<p>次に、図を右から左に（ゴールからスタートに向かって）たどって、それぞれの結合点に「最遅結合点時刻（最も遅くて、いつまでに始めなければならないか）」を書き込んでいくと、「クリティカルパス」を求められます。</p>
<div class="card process c-round">
<h3 class="mag_h10">アローダイアグラム問題の解き方</h3>
<ul>
<li>結合点ごとに「最早結合点時刻」「最遅結合点時刻」を書き込める箱を2つ書いておく</li>
<li>アローダイアグラムの図の左から右へたどって、結合点に「最早結合点時刻」を図に書き込む -> 最短完了日</li>
<li>アローダイアグラムの図の右から左へたどって、結合点に「最遅結合点時刻」を図に書き込む -> クリティカルパス</li>
<li>ダミー作業には 0 を書く</li>
</ul>
</div>
<p>この問題は、結合点 5 の最早結合点時刻を求めるものですが、せっかくなので、「プロジェクトが最短で何日で完了するか」と「クリティカルパス」も求めてみましょう。</p>
<p>&nbsp;</p>
<p>それぞれの結合点に 2 段重ねの四角形を書いてください。</p>
<p>この四角形の下段に 最早結合点時刻 を書き込み、上段に 最遅結合点時刻 を書き込みます（上下が逆でも問題ありません）。両者が同じになる作業は、余裕がありません。</p>
<p>「最も早くて、いつから始められるか」と「最も遅くて、いつまでに始めなければならないか」が同じ なら、作業の開始日にまったく余裕がないからです。</p>
<p>余裕のない作業を結んだ道筋がクリティカルパスです。クリティカルパスは、プロジェクトが完了するまでの日数を左右する「重要な道筋」です。</p>
<p>&nbsp;</p>
<p>以下は、図を左から右にたどって、それぞれの結合点に 最早結合点時刻 を書き込んだものです。</p>
<p>1 つ前の作業が終わってから、次の作業を始めます。</p>
<p>複数の作業の終わりを待つ場合は、最も遅い作業の終わりを待ってから、次の作業を始めることに注意してください。プロジェクトのゴールとなっている結合点 6 の 最早結合点時刻 は、8 です。</p>
<p>したがって、このプロジェクトは、最短で 8 日間で完了します。結合点 5 の 最早結合点時刻 は、7 なので、この問題の答えは、エです。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/q51_figure.png" alt="" /></p>
<p>以下は、最早結合点時刻 を書き込んだ後の図を右から左にたどって、それぞれの結合点に 最遅結合点時刻 を書き込んだものです。</p>
<p>1つ先にある作業の 最遅結合点時刻 から逆算して、その前の作業の 最遅結合点時刻 を求めます。</p>
<p>複数の作業の起点となっている結合点の場合は、それらの中で最も早く始めなければならない作業を、最遅結合点時刻 とすること に注意してください。</p>
<p>ここでは、最早結合点時刻 と 最遅結合点時刻 が同じになる余裕のない作業を、わかりやすいように太線の矢印で示しています。</p>
<p>余裕のない作業を結んだクリティカルパスは、A → D →（ ダミー作業 ）→ H です。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/q51_figure2.png" alt="" /></p>
<p>&nbsp;</p>
<p><i class="material-icons indigo-text mag_rt05">label</i>関連タグ<a class="tag mag_lt10" href="../../tag/アローダイアグラム">アローダイアグラム</a></p>
<h2>「稼働率の計算」の例題と解説</h2>
<p>最後に紹介する鉄板問題は、「稼働率の計算」です。</p>
<p>「稼働率」とは、システムが動作している確率です。試験には、<span class="bold">複数の装置から構成されたシステムの稼働率を求める問題が、よく出題されます。</span></p>
<p>&nbsp;</p>
<p>この手の問題を解くためには、基礎知識として</p>
<ol class="mag_h30 background bold c-round">
<li>それぞれの装置が 1 つだけしかなく、すべてが動作していなければならないシステムの稼働率を求める方法</li>
<li>同じ装置が複数あって、いずれか 1 つが動作していればよいシステムの稼働率を求める方法</li>
</ol>
<p>この 2 つを覚えればOKです。</p>
<p>&nbsp;</p>
<p>シンプルな例を示しましょう。</p>
<p>稼働率が 90 % のパソコン 1 台と、稼働率が 80 % のプリンタ 1 台から構成されたシステムがあるとします（実際には、こんなに稼働率が低いことはないと思いますが、計算しやすい値にしています）。</p>
<p>このシステムを図示すると、以下のように装置を直列につないだものになります。</p>
<p>装置と装置をつなぐ線は、その線をデータが流れて行くことを示します。</p>
<p>パソコンに入力されたデータの 90 % が出力され、それがプリンタに受け渡され、90 % の 80 % の 72 % が出力されます。</p>
<p>したがって、装置を直列につないだシステムの稼働率は、それぞれの装置の稼働率を掛け合わせて、</p>
<p>90 % × 80 % ＝ 0.9 × 0.8 ＝ 0.72 ＝ 72 %</p>
<p>という計算で求められます。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/capacity.png" alt="" /></p>
<p>稼働率が 80 % のプリンタが 2 台ある場合は、どうなるでしょう。</p>
<p>これを図示すると、以下のように装置を並列につないだものになります。</p>
<p>いずれかのプリンタが動作していれば、データを出力できます。その確率は、100 % から両方のプリンタが同時に止まる確率を引いたものです。</p>
<p>80 % で動作するプリンタは、100 % － 80 % ＝ 20 % の確率で止まります。</p>
<p>2 台のプリンタが同時に止まる確率は、20 % × 20 % ＝ 0.2 × 0.2 ＝ 0.04 ＝ 4% です。</p>
<p>したがって、いずれかのプリンタが動作している確率は、100 % － 4% ＝ 96% です。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/capacity2.png" alt="" /></p>
<p>それでは、稼働率 90 % のパソコン 1 台と、稼働率 80 % のプリンタ 2 台から構成されたシステムの稼働率は、いくつになるでしょう。</p>
<p>以下のように、パソコンの部分が 90 % で、プリンタの部分が 96 % なので、</p>
<p>90 % × 96 % ＝ 0.9 × 0.96 ＝ 0.864 ＝ 86.4 %</p>
<p>になります。ここまでの計算ができるようになれば、「稼働率の計算」の問題を解けるはずです。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/capacity3.png" alt="" /></p>
<p>&nbsp;</p>
<p>それでは、過去問題を解いてみましょう。</p>
<p>以下は、稼働率 a のサーバ 1 台、稼働率 b のクライアント 3 台、稼働率 c のプリンタ 2 台から構成されたシステムの稼働率を求める問題（平成 28 年度 春期 問 14 ）です。稼働率 1 ＝ 100 % の LAN は、常に動作しているので、計算に入れる必要はありません。</p>
<div class="card-panel mag_h30">
問 14　平成 31 年度 春期</p>
<p>図のように，1 台のサーバ，3 台のクライアント及び 2 台のプリンタが LAN で接続されている。このシステムはクライアントからの指示に基づいて，サーバにあるデータをプリンタに出力する。各装置の稼働率が表のとおりであるとき，このシステムの稼働率を表す計算式はどれか。ここで，クライアントは 3 台のうちどれか 1 台が稼働していればよく，プリンタは 2 台のうちどちらかが稼働していればよい。</p>
<p><img class="materialboxed hoverable mag_h10" src="../../wp-content/uploads/2020/01/q14_figure_availability.jpg"></p>
<table class="bordered mag_h30 responsive-width">
<thead>
<tr>
<th>装置</th>
<th>稼働率</th>
</tr>
</thead>
<tbody>
<tr>
<td>サーバ</td>
<td>a</td>
</tr>
<tr>
<td>クライアント</td>
<td>b</td>
</tr>
<tr>
<td>プリンタ</td>
<td>c</td>
</tr>
<tr>
<td>LAN</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>ア　ab<sup>3</sup>c<sup>2</sup>　　<br class="hide-on-med-and-up">イ　a( 1 &#8211; b<sup>3</sup> )( 1 &#8211; c<sup>2</sup> )<br />
ウ　a( 1 &#8211; b<sup>3</sup> )( 1 &#8211; c )<sup>2</sup>　　<br class="hide-on-med-and-up">エ　a( 1 &#8211; ( 1 &#8211; b<sup>3</sup> )( 1 &#8211; ( 1 &#8211; c )<sup>2</sup> )
</div>
<p>以下は、このシステムの構成を図示して、クライアントが 3 台ある部分と、プリンタが 2 台ある部分の稼働率を求め、さらにシステムの稼働率を求めたものです。選択肢にあるエと同じ式になっています。実際の正解もエです。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/11/capacity4.png" alt="" /></p>
<p>&nbsp;</p>
<p><i class="material-icons indigo-text mag_rt05">label</i>関連タグ<a class="tag mag_lt10" href="../../tag/稼働率">稼働率</a></p>
<h2>過去問で腕試し</h2>
<p>腕試しとして、この記事で紹介した以外の過去問題も解いてみてください。</p>
<p>以下に、鉄板問題が出題された年度と問題番号を示します。該当ページにリンクしていますので、そのページ内にある問題にチャレンジしてみてください。</p>
<table class="striped block responsive-width">
<tbody>
<tr>
<td>「 MIL 記号による論理演算」</td>
<td>
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_1/2009h21h_fe_am_qs.pdf#page=10" rel="noopener" target="_blank">H21春 問24</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_1/2010h22h_fe_am_qs.pdf#page=12" rel="noopener" target="_blank">H22春 問26</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_2/2010h22a_fe_am_qs.pdf#page=12" rel="noopener" target="_blank">H22秋 問24</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_fe_am_qs.pdf#page=13" rel="noopener" target="_blank">H23春 問24</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_2/2011h23a_fe_am_qs.pdf#page=14" rel="noopener" target="_blank">H23秋 問26</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2012h24_2/2012h24a_fe_am_qs.pdf#page=10" rel="noopener" target="_blank">H24秋 問22</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_1/2013h25h_fe_am_qs.pdf#page=13" rel="noopener" target="_blank">H25春 問24</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_2/2013h25a_fe_am_qs.pdf#page=13" rel="noopener" target="_blank">H25秋 問25</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_fe_am_qs.pdf#page=13" rel="noopener" target="_blank">H26春 問22</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_2/2014h26a_fe_am_qs.pdf#page=11" rel="noopener" target="_blank">H26秋 問21</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27_1/2015h27h_fe_am_qs.pdf#page=13" rel="noopener" target="_blank">H27春 問23</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27_2/2015h27a_fe_am_qs.pdf#page=12" rel="noopener" target="_blank">H27秋 問23</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2016h28_1/2016h28h_fe_am_qs.pdf#page=12" rel="noopener" target="_blank">H28春 問23</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2016h28_2/2016h28a_fe_am_qs.pdf#page=14" rel="noopener" target="_blank">H28秋 問23</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_2/2017h29a_fe_am_qs.pdf#page=11" rel="noopener" target="_blank">H29秋 問23</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_1/2018h30h_fe_am_qs.pdf#page=13" rel="noopener" target="_blank">H30春 問23</a>
</td>
</tr>
<tr>
<td>「アローダイアグラムの使い方」</td>
<td>
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_1/2009h21h_fe_am_qs.pdf#page=20" rel="noopener" target="_blank">H21春 問51</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_2/2009h21a_fe_am_qs.pdf#page=22" rel="noopener" target="_blank">H21秋 問51</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_1/2010h22h_fe_am_qs.pdf#page=8" rel="noopener" target="_blank">H22春 問51</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_fe_am_qs.pdf#page=24" rel="noopener" target="_blank">H23春 問51</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_2/2011h23a_fe_am_qs.pdf#page=22" rel="noopener" target="_blank">H23秋 問51</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2012h24_1/2012h24h_fe_am_qs.pdf#page=24" rel="noopener" target="_blank">H24春 問52</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2012h24_2/2012h24a_fe_am_qs.pdf#page=23" rel="noopener" target="_blank">H24秋 問52</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_2/2013h25a_fe_am_qs.pdf#page=25" rel="noopener" target="_blank">H25秋 問53</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_fe_am_qs.pdf#page=25" rel="noopener" target="_blank">H26春 問53</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_2/2014h26a_fe_am_qs.pdf#page=22" rel="noopener" target="_blank">H26秋 問52</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27_1/2015h27h_fe_am_qs.pdf#page=27" rel="noopener" target="_blank">H27春 問54</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27_2/2015h27a_fe_am_qs.pdf#page=23" rel="noopener" target="_blank">H27秋 問51</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_2/2010h22a_fe_am_qs.pdf#page=23" rel="noopener" target="_blank">H22秋 問52</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_1/2017h29h_fe_am_qs.pdf#page=26" rel="noopener" target="_blank">H29春 問51</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_2/2017h29a_fe_am_qs.pdf#page=22" rel="noopener" target="_blank">H29秋 問53</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_1/2018h30h_fe_am_qs.pdf#page=25" rel="noopener" target="_blank">H30春 問51</a>
</td>
</tr>
<tr>
<td>「稼働率の計算」</td>
<td>
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_1/2009h21h_fe_am_qs.pdf#page=7" rel="noopener" target="_blank">H21春 問16</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_2/2009h21a_fe_am_qs.pdf#page=9" rel="noopener" target="_blank">H21秋 問16</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_1/2010h22h_fe_am_qs.pdf#page=8" rel="noopener" target="_blank">H22春 問16</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2010h22_2/2010h22a_fe_am_qs.pdf#page=10" rel="noopener" target="_blank">H22秋 問19</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_1/2011h23tokubetsu_fe_am_qs.pdf#page=9" rel="noopener" target="_blank">H23春 問16</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_2/2011h23a_fe_am_qs.pdf#page=11" rel="noopener" target="_blank">H23秋 問19</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2012h24_1/2012h24h_fe_am_qs.pdf#page=10" rel="noopener" target="_blank">H24春 問17</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2012h24_2/2012h24a_fe_am_qs.pdf#page=8" rel="noopener" target="_blank">H24秋 問15</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_1/2013h25h_fe_am_qs.pdf#page=9" rel="noopener" target="_blank">H25春 問15</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_2/2014h26a_fe_am_qs.pdf#page=8" rel="noopener" target="_blank">H26秋 問14</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27_1/2015h27h_fe_am_qs.pdf#page=10" rel="noopener" target="_blank">H27春 問15</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2015h27_2/2015h27a_fe_am_qs.pdf#page=9" rel="noopener" target="_blank">H27秋 問15</a><br />
<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2016h28_1/2016h28h_fe_am_qs.pdf#page=9" rel="noopener" target="_blank">H28春 問14</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2016h28_2/2016h28a_fe_am_qs.pdf#page=10" rel="noopener" target="_blank">H28秋 問15</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_1/2017h29h_fe_am_qs.pdf#page=9" rel="noopener" target="_blank">H29春 問14</a>　<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_2/2017h29a_fe_am_qs.pdf#page=8" rel="noopener" target="_blank">H29秋 問15</a>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>いかがでしたか。鉄板問題の解法のポイントを、ご理解いただけたでしょう。</p>
<p>それでは、またお会いしましょう！</p>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon_tokikata/common_problems/">過去問の解き方知りたいぜ | よく出る「鉄板問題」を解説</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>午後問題の歩き方 ｜ CASLⅡで必要となる2進数に関する知識</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/gogo_arukikata/guide_caslii_2_of_questions_at_pm/</link>
		<pubDate>Mon, 20 Aug 2018 05:22:28 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[2進数]]></category>
		<category><![CDATA[CASL II]]></category>
		<category><![CDATA[マスク]]></category>
		<category><![CDATA[午後プログラミング言語問題]]></category>
		<category><![CDATA[午後問題の解説]]></category>
		<category><![CDATA[論理回路]]></category>

		<guid isPermaLink="false">http://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=gogo_arukikata&#038;p=388</guid>
		<description><![CDATA[<p>前回の記事 では、 「 CASLⅡの言語構文を覚えるだけなら、それほど時間はかかりません（簡単です）」 「ただし、問題を解くには、2 進数に関する様々な知識が必要 とされます（それほど簡単ではありません）」 ということを [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/gogo_arukikata/guide_caslii_2_of_questions_at_pm/">午後問題の歩き方 ｜ CASLⅡで必要となる2進数に関する知識</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="../guide_caslii_1_of_questions_at_pm/">前回の記事</a> では、</p>
<blockquote>
<ul>
<li>「 CASLⅡの言語構文を覚えるだけなら、それほど時間はかかりません（簡単です）」</li>
<li>「<span class="bold">ただし、問題を解くには、2 進数に関する様々な知識が必要</span> とされます（それほど簡単ではありません）」</li>
</ul>
</blockquote>
<p>ということを説明しました。</p>
<p>今回は、過去問題に出題されたプログラムを例にして、<span class="bold">どのような知識が、どのような場面で必要とされるのか</span> を説明します。</p>
<p>CASLⅡを選ぼうかどうか迷っている人の参考になれば幸いです。</p>
<ul class="background c-round blue-grey-text">
<span class="small-text"><i class="material-icons light-blue-text mag_rt05">error</i>編集部注</span></p>
<li>本記事ではわかりやすいよう、プログラムの問題に背景を入れています。</li>
<li class="hide-on-med-and-up">スマートフォンでご覧の際、計算式やプログラムは横スクロールすると全文をご覧になれます。</li>
</ul>
<style>ul.background li{font-size:.9em}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:#2d2d2d;color:#fbfbfb}article pre:not(.line-numbers){margin-right:-7.5%!important;margin-left:-7.5%!important;padding-left:7.5%!important}article pre.line-numbers{margin-right:-7.5%!important;margin-left:-7.5%!important}.r-width{width:50%;margin:auto}@media screen and (max-width:600px){.r-width{width:100%}}.border{padding:.2em 4em;border:.2em solid #fff;font-weight:700;display:inline-block;margin:.2em}ol.background li{margin-left:1.5em}.img-background{background-size:100%;background-position:center;background-repeat:no-repeat;transition:background-size .4s ease-in-out}.inner{background:#09090980;color:#fff;padding:2.5em 1.25em;border-radius:.5em;transition:color .4s ease-in-out;font-weight:700}.img-background:hover{background-size:110%;transition:background-size .4s ease-in-out}.img-background:hover .inner{color:#40c4ff;transition:color .4s ease-in-out}.ccc{color:#ccc}</style>
<h2>シフトと加算で乗算を行う手順を知っていますか？</h2>
<p><a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21_1/2009h21h_fe_pm_qs.pdf#page=50" rel="noopener" target="_blank">平成 21 年度 春期 午後 問 12</a>  のテーマは「 32 ビットの乗算」です。</p>
<div class="card-panel mag_h30">
問 12</p>
<p>次のアセンブラプログラムの説明及びプログラムを読んで，設問 1 ，2 に答えよ。</p>
<p>【プログラムの説明】<br />
32 ビットの乗算を行う副プログラム MULS である。<br />
&#x205D;
</p></div>
<p>この問題を解くには、<span class="u">シフトと加算で 2 進数の乗算を行う手順を知っていなければなりません。</span></p>
<p>以下にシンプルな例題を示したので、手作業でやってみてください。演算結果は、初期状態でゼロクリアされているとします。</p>
<div class="chip" style="height: auto; line-height: 2;"><i class="material-icons light-blue-text mag_rt05">code</i>〔例題〕シフトと加算で 2 進数の乗算を行う</div>
<pre class="pad_h10 ccc">
  00000000000000000000000000001111  被乗数
× 00000000000000000000000000000101  乗数
------------------------------------
  00000000000000000000000000000000  演算結果
</pre>
<p>まず、乗数 の 最下位桁 が 1 なら 演算結果 に 被乗数 を 加算 します。</p>
<p>次に、乗数 を 1 ビット論理右シフト して、次にチェックする桁を 最下位桁 に移動します。<br />
そして、次の 加算 に合わせて、被乗数 を 1 ビット論理左シフト します。</p>
<p>これを、乗数 が 0 になるまで繰り返します。</p>
<pre class="pad_h10 ccc">
  00000000000000000000000000001111  被乗数
× 00000000000000000000000000000101  乗数
------------------------------------
  00000000000000000000000000001111
+ 00000000000000000000000000111100
------------------------------------
  00000000000000000000000001001011  演算結果
</pre>
<p>この手順は、平成 21 年度 春期 だけでなく、何度も出題されています。</p>
<h2>最下位桁が 1 かどうかチェックする方法がわかりますか？</h2>
<p>先ほどの問題を解くための知識の説明を続けます。シフト と 加算 で 乗算 を行う手順の中で、乗数 の 最下位桁 が 1 かどうかをチェックします。</p>
<p>以下は、問題に示されたプログラムの一部です。</p>
<div class="chip"><i class="material-icons light-blue-text mag_rt05">code</i>プログラム 1</div>
<pre class="language-none">
LP      SRL     GR2,1   ; 乗数を 1 ビット右にシフト
        <span class="border">a</span>
        JZE     FIN
        JUMP    NEXT    ; 加算処理をスキップ
ADD32   ADDL    GR6,GR4 ; 32 ビット + 32 ビット → 32 ビット
        ADDL    GR7,GRS
</pre>
<p>GR2 に格納されている  乗数を 1 ビット論理右シフトした後で、空欄 a には 最下位桁 が 1 なら ADD32 というラベルにジャンプする処理が入ります。</p>
<p>選択肢から答えを選ぶには、最下位桁 が 1 であることを判断する方法を知っていなければなりません。</p>
<div class="card-panel mag_h50">
a に関する解答群</p>
<p>ア　<code class="language-none"> JMI　ADD32 </code>　　<br class="hide-on-med-and-up">イ　<code class="language-none"> JMI　LP　</code><br />
ウ　<code class="language-none"> JOV　ADD32 </code>　　<br class="hide-on-med-and-up">エ　<code class="language-none"> JOV　LP　</code><br />
オ　<code class="language-none"> JPL　ADD32 </code>　　<br class="hide-on-med-and-up">カ　<code class="language-none"> JPL　LP　</code>
</div>
<p>答えは、選択肢ウ の JOV ADD32 です。</p>
<p>&nbsp;</p>
<p>最下位桁 が 1 なら、論理右シフト によって、その 1 がはみ出します。それを JOV（ Jump OVerflow, オーバーフローならジャンプする）で判断するのです。</p>
<p>一般的な感覚では、上位桁 からはみ出すことが オーバーフロー（桁あふれ）ですが、コンピュータでは、<span class="bold">下位桁 からはみ出すこともオーバーフロー</span> なのです。</p>
<p>&nbsp;</p>
<p>なお、別の年度の問題では、論理右シフト することではなく、「 #0001 と AND 演算した結果が ゼロ でないなら 最下位桁 が 1 である」と判断するプログラムが出題されたこともあります。</p>
<p>いろいろな方法があるので、 1 つに決め付けないようにしましょう。</p>
<h2>ビット演算で数値を数字に変換する方法がわかりますか？</h2>
<p>次の例は、<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_2/2013h25a_fe_pm_qs.pdf#page=60" rel="noopener" target="_blank">平成 25 年度 秋期 午後 問 12「数字列の時間と数値の秒との変換」</a> です。</p>
<p>この問題を解くには、<span class="bold">ビット演算で 1 桁の数値を数字に変換する</span> 方法を知っていなければなりません。</p>
<p>&nbsp;</p>
<p>プログラムの中で、該当する部分を以下に示します。たったの 1 行だけです。空欄 c の選択肢には、レジスタ の名前が示されています。</p>
<p>レジスタの名前を選ぶには、この処理を見て<span class="bold">「 1 桁 の数値を 数字に変換する処理 だ！」</span> とピンと来なければなりません。</p>
<div class="chip"><i class="material-icons light-blue-text mag_rt05">code</i>プログラム 2</div>
<pre class="language-none">
18 |　　      OR    <span style="padding:.2em 2em;border:.2em solid #fff;font-weight:700;display:inline-block;margin:.2em">c</span> ,='0'
</pre>
<p>&nbsp;</p>
<p>以下は、試験問題に添付されている文字の符号表です。</p>
<p><img class="materialboxed hoverable mag_h30" src="../../wp-content/uploads/2018/08/Q12_h25_table.png" alt="" /></p>
<p>&#8216;0&#8217; ～ &#8216;9&#8217; という数字（文字）には、#30 ～ #39（先頭の # は、16 進数であることを意味します）という符号が割り当てられています。</p>
<p>したがって、たとえば GR0 に 0 ～ 9 の数値が格納されていれば、それと #30 を OR 演算することで、#30 ~ #39 という数字に変換できます。</p>
<p>#30 は、 &#8216;0&#8217; の文字コードなので、このプログラムでは、</p>
<pre class="language-none">
    OR    GR0,=#30
</pre>
<p>という処理を、</p>
<pre class="language-none">
    OR    GR0,='0'
</pre>
<p>と表記しています。</p>
<p>「 &#8216;0&#8217; の文字コードと OR 演算しているんだから、何をやっているかわかるよね！」というヒントなのでしょう（たぶん）。</p>
<p>このような知識は、1 つひとつ確実に覚えていきましょう。そうすれば、他の問題で応用ができます。</p>
<p>&nbsp;</p>
<p>たとえば、以下は<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2018h30_1/2018h30h_fe_pm_qs.pdf#page=63" rel="noopener" target="_blank">平成 30 年度 春期 午後 問 12「数字列の数値への変換」</a>に出題されたプログラムの一部です。</p>
<p>先ほど覚えた知識があれば、これを見て、すぐに何をしているのかピンと来たでしょう。</p>
<div class="chip"><i class="material-icons light-blue-text mag_rt05">code</i>プログラム 1</div>
<pre class="line-numbers" data-start="8"><code class="language-none">    SUBL  GR4,='0'  ; 1 桁を数値に変換</code></pre>
<p>ご丁寧にコメントも付けられていますが、この処理は、GR4 に格納されている 数字 を 数値 に 変換 しています。</p>
<p>たとえば、GR4 に &#8216;5&#8217; という数字の符号の #35 が格納されているとすれば、そこから &#8216;0&#8217; の符号の #30 を引くことで、数値の 5 に変換できます。</p>
<p>この変換は、</p>
<pre class="language-none">
    AND   GR4,#000F
</pre>
<p>と ビット演算 でもできますが、SUBL という 減算 を使っているのは、出題者の好みなのでしょう。</p>
<h2>#FFFF が 2 進数でいくつか、すぐにわかりますか？</h2>
<p>ビット演算 を行うには、 <span class="bold">マスク</span> を作る必要があります。</p>
<p>マスクとは、たとえば、0101010101010101 の下位 8 ビットを取り出すときには、</p>
<pre class="pad_h10 ccc">
    0101010101010101
AND 0000000011111111
</pre>
<p>という ビット演算 を行いますが、このときの 0000000011111111 というパターンのことです。</p>
<p>&nbsp;</p>
<p>以下は、<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2017h29_2/2017h29a_fe_pm_qs.pdf#page=64" rel="noopener" target="_blank">平成 29 年度 秋期 午後 問 12「ビット列の検索・置換」</a> に出題されたプログラムの一部です。</p>
<p>「マスク作成」というコメントにあるように、GR6 に マスク を作成しています。</p>
<p>仮に、GR3 の値が 10 進数 で 8 だとしたら、GR6 には、どのようなパターンのマスクが作られるでしょう。トレースしてみてください。</p>
<div class="chip"><i class="material-icons light-blue-text mag_rt05">code</i>プログラム 1</div>
<pre class="line-numbers" data-start="4">
<code class="language-none">    LD    GR6,=#FFFF  ; マスク作成
    SRL   GR6,0,GR3
    XOR   GR6,=#FFFF</code>
</pre>
<p>マスクのパターンを見出すには、<span class="bold">#FFFF という 16 進数が、2 進数で 1111111111111111</span> であることを知っておくべきです。</p>
<ol class="background c-round">
<li>4 行目で GR6 に 1111111111111111 が格納される</li>
<li>5 行目で GR6 が 8 ビット右論理シフト されて 0000000011111111 になる</li>
<li>6 行目で GR6 の 0000000011111111 と 1111111111111111 が XOR 演算される</li>
<li>GR6 は 1111111100000000 になる</li>
</ol>
<p>この時点の GR6 の内容が マスク です。</p>
<p>&nbsp;</p>
<p>6 行目にも知っておくべき知識があります。</p>
<p>CASLⅡ の論理演算の命令は、AND 演算、OR 演算、XOR 演算だけであり、データを反転する NOT 演算がありません。</p>
<p>NOT 演算を行いたい場合は、すべての桁 が 1 の マスク と XOR 演算することで代用します。</p>
<p>すべての桁 が 1 のデータは、16 進数で #FFFF です。6 行目の </p>
<pre class="line-numbers" data-start="6"><code class="language-none"> XOR   GR6,=#FFFF </code></pre>
<p>を見て <span class="bold">「これはデータの反転だ！」とわかるようになりましょう。</span></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>
<h2>#FFFF が 2 の補数表現 でマイナス 1 だとすぐにわかりますか？</h2>
<p>最後に、もう一度だけ、目的を実現する方法を 1 つに決め付けないようにしましょう、ということを言っておきたいので、以下のプログラムを見てください。</p>
<p>これは、<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_2/2011h23a_fe_pm_qs.pdf#page=56" rel="noopener" target="_blank">平成 23 年度 秋期 午後 問 12「除算と2 進 10 進数文字列変換」</a> に出題されたプログラムの一部です。</p>
<p>注目してほしいのは、<span class="bold">「商の初期化」</span> とコメントされた部分にある #FFFF です。</p>
<div class="chip"><i class="material-icons light-blue-text mag_rt05">code</i>プログラム 1</div>
<pre>
<code class="language-none">DIV   START               ; 減算を用いた 32 ビット除算
      PUSH    0,GR6
      PUSH    0,GR7
      LD      GR6,GR1
      LD      GR7,GR2
      LD      GR1,=#FFFF  ; 商の初期化
      LD      GR2,=#FFFF
LP    LD      GR4,GR6
      LD      GR5,GR7
      ADDL    GR2,=1      ; 商のカウントアップ</code>
</pre>
<p>先ほども説明したように、#FFFF という 16 進数は、 2 進数 で 1111111111111111 です。</p>
<p>それでは、この 1111111111111111 は、マスク を作るためのデータなのでしょうか。</p>
<p>&nbsp;</p>
<p>ここでは、違います。</p>
<p>1111111111111111 は、<span class="bold">2 の補数表現 の -1</span> です。</p>
<p>すべての桁が 1 の 2 進数を見て「 2 の補数表現 で -1 だ」とわかるようになってください。</p>
<p>それを <span class="bold">16 進数で示した #FFFF を見ても「これは -1 だ」とわかるようになりましょう</span>。</p>
<p>これも、知っておくべき重要な知識です。</p>
<p>&nbsp;</p>
<p>この問題では、引き算 を繰り返して、被除数 から 除数 を引けた回数を 商（除算の結果）とします。</p>
<p>それなら、「商の初期化」とコメントされた部分では、商を格納するレジスタをゼロクリアするべきです。</p>
<p>ところが、このプログラムでは、繰り返し処理の先頭（「商のカウントアップ」とコメントされた部分）で、引き算を行う前に、商をカウントアップしています。ここで -1 が ゼロになる のでつじつまが合うのです。</p>
<p>ちょっと、わかりにくいですね。</p>
<p>&nbsp;</p>
<p>そもそも、CASLⅡ では、= の後に 10 進数を記述することもできるので、商を -1 で 初期化 するなら、= #FFFF ではなく、= -1 と表記すべきです（これは、筆者の個人的な意見です）。</p>
<p>ここも、わかりにくいですね。</p>
<p>&nbsp;</p>
<p>でも、そういう問題が出題されているのですから、あれこれ文句を言わずに、とにかく練習あるのみです。</p>
<div class="grey lighten-5 mag_h30 pad_20 c-round">
<i class="material-icons teal-text">search</i><span class="blue-grey-text mag_w10">タグで関連記事をチェック</span><a href="../../tag/2進数/" class="tag">2進数</a>
</div>
<p>&nbsp;</p>
<div class="divider mag_h30"></div>
<p>実際の試験に出題された 2 進数の知識を見て、どう思いましたか？</p>
<p>「これなら、できそうだ！」と思った人は、迷わず CASLⅡ を選んでください。本試験に向けて、CASLⅡの過去問題をドンドン練習してください。</p>
<p><span class="bold">それとは逆に「こりゃ、だめだ！」と思った人は、本試験まで時間がなければ、CASLⅡをキッパリと断念して、別の言語を選びましょう</span>。</p>
<p>次回は、表計算の学習手順と、問題を解くために必要とされる知識を説明しますので、参考にしてください。</p>
<p><a href="../guide_spreadsheet_1_of_questions_at_pm/"></p>
<div class="card mag_h50 hoverable c-round">
<div class="row valign-wrapper direction-column-on-small">
<div class="col m3 s12 pad_00 flex"><img src="../../wp-content/uploads/2018/08/light-spreadsheet_cover.jpg" loading="lazy"></div>
<div class="col m9 s12 pad_20 bold black-text">表計算も簡単ではなくプログラミング問題（1）基礎知識</div>
</div>
</div>
<p></a></p>
<p>それでは、またお会いしましょう！</p>
<p>&nbsp;</p>
<p><i class="material-icons indigo-text mag_rt05">label</i>そのほかのプログラミング言語の記事</p>
<div class="row">
<div class="col m6">
<a href="../how_about_python/"></p>
<div class="img-background" style="background-image: url('../../wp-content/uploads/2019/01/python_cover.png');">
<div class="inner">「基本情報 の Python ってどんな感じ？」を解説｜午後問題の歩き方</div>
</div>
<p></a>
</div>
<div class="col m6">
<a href="../guide_java_1_of_questions_at_pm/"></p>
<div class="img-background" style="background-image: url('../../wp-content/uploads/2018/08/java_logo.jpg');">
<div class="inner">午後問題の歩き方 ｜ Java プログラミング問題の難易度（1）Java基本構文</div>
</div>
<p></a>
</div>
</div>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/gogo_arukikata/guide_caslii_2_of_questions_at_pm/">午後問題の歩き方 ｜ CASLⅡで必要となる2進数に関する知識</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
		<item>
		<title>午後問題の歩き方 &#124; 午後問題の読み方～ハードウェア</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/gogo_arukikata/guide_hw_of_questions_at_pm/</link>
		<pubDate>Mon, 25 Jun 2018 01:18:35 +0000</pubDate>
		<dc:creator><![CDATA[矢沢 久雄]]></dc:creator>
				<category><![CDATA[ハードウェア]]></category>
		<category><![CDATA[午後問題の解説]]></category>
		<category><![CDATA[論理回路]]></category>

		<guid isPermaLink="false">http://www.seplus.jp/dokushuzemi/fe/fenavi/?post_type=gogo_arukikata&#038;p=250</guid>
		<description><![CDATA[<p>筆者は、基本情報技術者試験の対策講座で講師をしています。 もしも、受講者から「ハードウェアの午後問題で1問だけ勉強するとしたら、どれがよいですか？」と質問されたら、平成 25 年度 秋期 午後 問 1「論理演算と加算器」 [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/gogo_arukikata/guide_hw_of_questions_at_pm/">午後問題の歩き方 | 午後問題の読み方～ハードウェア</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>もしも、受講者から「ハードウェアの午後問題で1問だけ勉強するとしたら、どれがよいですか？」と質問されたら、<a href="https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2013h25_2/2013h25a_fe_pm_qs.pdf#page=5" rel="noopener" target="_blank">平成 25 年度 秋期 午後 問 1「論理演算と加算器」</a>をお勧めするでしょう。</p>
<p>論理演算や加算器に関する問題は、事前に勉強しておけば、短時間に解けるからです。出題頻度も多く、他の問題に応用もできます。</p>
<p>この記事で、問題と解法を示しますので、実際にやってみましょう。</p>
<style>figure{position:relative;margin:1.5em 0}.half-width-on-large{width:50%;margin:auto;}dl.inline dd{margin-left:2em;}.block-top{display:flex;align-items:start;}pre{font-family:Consolas,'Courier New';}table{font-size:.85em}@media screen and (max-width:600px){dd{margin-left:0;}.half-width-on-large{width:100%}}</style>
<h2>論理演算の種類と機能を、あらかじめ知っておこう</h2>
<p>以下は、問題の冒頭部分です。</p>
<p>論理演算の種類と機能を一覧表で示していますが、<span class="bold">これは、この場で初めて知るような代物ではありません。あらかじめ熟知しておくべきもの</span> です。</p>
<p>&nbsp;</p>
<p>それでは、なぜこの一覧表があるのでしょう。</p>
<p>おそらく、設問の前に示すものが、他になかったのでしょう。</p>
<p>論理演算は、真と偽の演算ですが、ここでは、真 を 1 、偽 を 0 で表しています。もしかすると、それだけを示したかったのかもしれません。</p>
<div class="card-panel mag_h30">
<dl>
<dt>問 1</dt>
<dd>論理演算と加算器に関する次の記述を読んで，設問 1 ～ 4 に答えよ。<br />
真を 1，偽を 0 として，主要な論理演算の真理値表を，表 1 に示す。
</dd>
<dd>
<div class="mag_h10 background c-round small-text blue-grey-text hide-on-med-and-up"><i class="material-icons light-blue-text mag_rt05">info</i>スマートフォンでご覧の際は、表をスクロールできます</div>
<div class="table-container">
<table class="mag_h30 centered responsive-width">
<caption class="grey-text">表 1　主要な論理演算の真理値表 </caption>
<thead>
<tr>
<th>A</th>
<th>B</th>
<th>A AND B</th>
<th>A OR B</th>
<th>A XOR B</th>
<th>A NAND B</th>
<th>A NOR B</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
</tbody>
</table>
<table class="mag_h30 centered" style="width: 30vw; margin: auto;">
<thead>
<tr>
<th>A</th>
<th>NOT A</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>論理演算が苦手な人のために、論理演算の機能と種類を説明しておきましょう。</p>
<p>論理演算の基本は、AND と OR と NOT です。</p>
<p>これらの機能は、英語の意味そのものであり、AND は「かつ」、OR は「または」、 NOT は「でない」です。</p>
<p>A AND B は、A が 1 かつ B が 1 なら、1 になります。<br />
A OR B は、A が 1 または B が 1 なら、1 になります。<br />
NOT A は、A の値 が 0 なら 1、A の値 が 1 なら 0 になります。</p>
<p>&nbsp;</p>
<p>XOR と NAND と NOR は、AND と OR と NOT を組み合わせて実現できる演算なのですが、よく使われるものので、名前が付けられています。</p>
<p>それぞれの名前の意味がわかれば、機能もわかります。</p>
<div class="background c-round mag_h30">
<h3 class="post-title mag_h00">XOR（エックスオア）</h3>
<p>eXclusive OR の略で「排他的または」という意味です。<br />
A XOR B は、A が 1 または B が 1 なら、1 になりますが、A と B の 両方 が 1 のときは、0 になります。<br />
つまり、A と B の どちらか一方だけが 1 のとき に、演算結果が 1 になるのです。他方を排除しているので、排他的というわけです。
</p></div>
<div class="background c-round mag_h30">
<h3 class="post-title mag_h00">NAND（ナンド）</h3>
<p>NOT AND の略です。<br />
A NAND B は、A AND B の演算結果を NOT 演算します。<br />
つまり、A NAND B ＝ NOT（ A AND B ）です。
</p></div>
<div class="background c-round mag_h30">
<h3 class="post-title mag_h00">NOR（ノア）</h3>
<p>NOT OR の略です。<br />
A NOR B は、A OR B の演算結果を NOT 演算します。<br />
つまり、A NOR B ＝ NOT（ A OR B ）です。
</p></div>
<h2>入力を想定して出力を求める解法では、かなりの時間がかかる</h2>
<p>それでは、設問 1 を見てみましょう。NAND と NOR の機能を実現しているのはどれか、という問題です。</p>
<div class="card-panel mag_h30">
<dl>
<dt>設問 1</dt>
<dd>AND, OR, XOR, NOT の各論理演算を行う論理回路を用いて， NAND と NOR の論理演算を行う論理回路を作成した。次の記述中の<span class="blank"></span>に入れる正しい答えを，解答群の中から選べ。ここで， X, Y は 1 ビットの入力， Z は 1 ビットの出力とする。</p>
<ol>
<li>NAND の論理回路は<span class="blank">a</span>である。 </li>
<li>NOR の論理回路は<span class="blank">b</span>である。</li>
</ol>
</dd>
</dl>
<div class="row flex wrap">
<div class="col m6 block-top">ア<img src="../../wp-content/uploads/2018/06/q1_q1_option_a.jpg" loading="lazy"></div>
<div class="col m6 block-top">イ<img src="../../wp-content/uploads/2018/06/q1_q1_option_i.jpg" loading="lazy"></div>
<div class="col m6 block-top">ウ<img src="../../wp-content/uploads/2018/06/q1_q1_option_u.jpg" loading="lazy"></div>
<div class="col m6 block-top">エ<img src="../../wp-content/uploads/2018/06/q1_q1_option_e.jpg" loading="lazy"></div>
</div>
</div>
<p>この手の問題の解法は、大きく分けて 2 つあります。</p>
<p>1 つ目の解法は、入力の X と Y に 0 と 1 を想定して、出力の Z を書き出すことです。以下のようになります。</p>
<table class="striped centered responsive-width mag_h30">
<thead>
<tr>
<th>X</th>
<th>Y</th>
<th>選択肢アの Z</th>
<th>選択肢イの Z</th>
<th>選択肢ウの Z</th>
<th>選択肢エの Z</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
</tbody>
</table>
<p>この結果から、 NAND の機能を実現しているのは、選択肢イであり、 NOR の機能を実現しているのは、選択肢アだとわかります。</p>
<p><span class="bold">しかし、この解法では、かなりの時間がかかってしまいます。</span></p>
<h2>ド・モルガンの法則を知っていれば、短時間で解ける</h2>
<p>2 つ目の解法は、以下に示した「ド・モルガンの法則」を使って、式を変形することです。</p>
<p>この解法なら、ほとんど時間がかかりません。</p>
<div class="background">
<h3 class="post-title mag_h00">ド・モルガンの法則</h3>
<p>【法則 1 】　NOT（ X AND Y ）＝ NOT X OR NOT Y<br />
【法則 2 】　NOT（ X OR Y ）＝ NOT X AND NOT Y
</p></div>
<p><span class="bold">実は、この設問は、ド・モルガンの法則を知っていれば、式を変形するまでもなく、瞬時に解けてしまいます。</span></p>
<p>設問が、ド・モルガンの法則そのものになっているからです。</p>
<div class="background">
【法則 1 】　NOT（ X AND Y ）＝ NOT X OR NOT Y
</div>
<p>法則1の左辺の NOT（ X AND Y ）は、X AND Y の NOT なのですから、X NAND Y です。<br />
これが、右辺の NOT X OR NOT Y と等しいのです。<br />
NOT X OR NOT Y は、X と Y それぞれを NOT してから OR しているので、これは選択肢イです。</p>
<p>したがって、選択肢イが NAND です。</p>
<div class="background">
【法則 2 】　NOT（ X OR Y ）＝ NOT X AND NOT Y
</div>
<p>法則 2 の左辺の NOT（ X OR Y ）は、X OR Y の NOT なのですから、X NOR Y です。<br />
これが、右辺の NOT X AND NOT Y と等しいのです。<br />
NOT X AND NOT Y は、X と Y それぞれを NOT してから AND しているので、これは選択肢アです。</p>
<p>したがって、選択肢アが NOR です。</p>
<p>&nbsp;</p>
<p>ピンと来ないかもしれないので、ド・モルガンの法則の式に、図を対応付けて示しておきましょう。法則 1 は NAND で、法則 2 は NOR です。</p>
<div class="background">
【法則 1 】　NOT（ X AND Y ）＝ NOT X OR NOT Y<br />
<img class="materialboxed z-depth-5 mag_h30 responsive-width" src="../../wp-content/uploads/2018/06/figure_NOTXANDY.png" alt="" / loading="lazy">
</div>
<div class="background">
【法則 2 】　NOT（ X OR Y ）＝ NOT X AND NOT Y<br />
<img class="materialboxed z-depth-5 mag_h30 responsive-width" src="../../wp-content/uploads/2018/06/figure_NOTXORY.png" alt="" / loading="lazy">
</div>
<h2>半加算器と全加算器の仕組みも、あらかじめ知っておくべきもの</h2>
<p>設問 2 は半加算器に関するもので、設問 3 は全加算器に関するものです。</p>
<p>これらも、この場で初めて知るような代物ではありません。あらかじめ熟知しておくべきものです。</p>
<p>コンピュータの内部では、論理演算を組み合わせて2進数の加算を実現しています。それを実現する装置を、加算器と呼びます。</p>
<p>&nbsp;</p>
<p>たとえば、 0101 ＋ 0011 という 2 進数の加算を行うとしましょう。</p>
<p>10 進数の加算と同様に、最下位桁から上位桁に向かって、1 桁ずつ順番に足して行きます。最下位桁だけは、その桁にある 2 つの数値を加算します。これを行うのが、半加算器です。</p>
<p>最下位桁より上の桁は、その桁にある2つの数値と、下位桁からの桁上がりの 1 つの数値を加算するので、全部で 3 つの数値を加算します。これを行うのが、全加算器です。</p>
<p><img class="materialboxed z-depth-5 mag_h30 half-width-on-large" src="../../wp-content/uploads/2018/06/rev_adder.png"></p>
<p>設問 2 では、X と Y を加算し、その結果を C と Z で示しています。</p>
<p>C は桁上がりで、Z は同じ桁の数値です。たとえば、1 ＋ 1 の結果は 10 ですが、10 の 1 が C で、0 が Z です。</p>
<div class="card-panel mag_h30">
<dl>
<dt>設問 2</dt>
<dd>各 1 ビットの入力 X, Y を加算して，その結果を各 1 ビットの Z と桁上がり C に出力する &#8220;半加算器&#8221; の真理値表を表 2 に，論理回路を図 1 に示す。図 1 中の<span class="blank"></span>に入れる正しい答えを，解答群の中から選べ。</dd>
<dd>
<pre class="grey lighten-5 pad_10 blue-grey-text text-darken-4 c-round half-width-on-large">
    X
+   Y
-------
  C Z
</pre>
</dd>
<dd>
<table class="mag_h30 responsive-width centered">
<caption class="grey-text">表 2　半加算器の真理値表</caption>
<thead>
<tr>
<th>X</th>
<th>Y</th>
<th>C</th>
<th>Z</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
</tbody>
</table>
</dd>
<dd>
<figure>
<img class="materialboxed z-depth-5 mag_h30 half-width-on-large" src="../../wp-content/uploads/2018/06/q1q2_figure.jpg" loading="lazy"><figcaption>図 1　半加算器の論理回路</figcaption></figure>
</dd>
</dl>
<p>解答群<br />
ア　AND　　イ　NAND　　<br class="hide-on-med-and-up">ウ　NOR　　エ　OR　　<br class="hide-on-med-and-up">オ　XOR
</div>
<p>空欄は、X と Y から Z を得る論理演算を選ぶ問題です。</p>
<p>表 2 を見ると、Z は、X と Y の どちらか一方だけが 1 のときに演算結果が 1 になっているので、これは XOR 演算です。したがって、答えは、選択肢オです。</p>
<p>ただし、<span class="bold">半加算器の桁上がりが AND 演算で得られ、同じ桁の数値が XOR 演算で得られることは、あらかじめ熟知しておくべき</span> です。そうすれば、表 2 を見るまでもなく、瞬時に答えがわかります。</p>
<h2>全加算器は、2 つの半加算器 と OR 回路で構成される</h2>
<p>設問 3 も、全加算器の仕組みを知っていれば、瞬時に答えがわかります。</p>
<div class="card-panel mag_h30">
<dl>
<dt>設問 3</dt>
<dd>各 1 ビットの入力 X, Y と，下位桁からの 1 ピットの桁上がり C<sub>in</sub> を加算して，その結果を各 1 ビットの Z と桁上がりの C に出力する &#8220;全加算器&#8221; の真理値表を表 3 に，論理回路を図 2 に示す。図 2 中の<span class="blank"></span>に入れる正しい答えを，解答群の中から選べ。</dd>
<dd>
<pre class="grey lighten-5 pad_10 blue-grey-text text-darken-4 c-round half-width-on-large">
    X
    Y
+   C<sub>in</sub>
-------
  C Z
</pre>
</dd>
<dd>
<figure>
<span class="blue-grey-text" style="position:absolute;top:50%;right:0">β</span></p>
<table class="centered responsive-width">
<caption class="grey-text">表 3　全加算器の真理値表</caption>
<thead>
<tr>
<th>C<sub>in</sub></th>
<th>X</th>
<th>Y</th>
<th>C</th>
<th>Z</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr style="border-top: #607d8b .2em solid; border-left:#607d8b .2em solid;border-right:#607d8b .2em solid;">
<td>0</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr style="border-bottom: #607d8b .2em solid; border-left:#607d8b .2em solid;border-right:#607d8b .2em solid;">
<td>1</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>1</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>0</td>
<td>1</td>
<td>0</td>
</tr>
<tr>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table>
</figure>
</dd>
<dd>
<figure>
<img class="materialboxed z-depth-5 mag_h30 responsive-width" src="../../wp-content/uploads/2018/06/q1q3_figure.jpg" loading="lazy"><figcaption>図 2　全加算器の論理回路</figcaption></figure>
</dd>
</dl>
<p>解答群<br />
ア　AND　　イ　NAND　　<br class="hide-on-med-and-up">ウ　NOR　　エ　OR
</div>
<p>全加算器は、3 つの数値を加算します。</p>
<p>全加算器は、2 つの半加算器 と OR 回路で構成されます。</p>
<p>1 つ目の半加算器で 2 つの数値を加算し、その結果の Z と もう 1 つの数値を 2 つ目の半加算器で加算して、最終的な Z を得ます。</p>
<p>2 つの半加算器の桁上がり C の いずれかが 1 なら、最終的な C が 1 になるので、それを OR 回路で検出します。</p>
<p>この仕組みを、あらかじめ熟知しておくべきなのです。設問 3 の答えは、選択肢エ の OR です。</p>
<p>&nbsp;</p>
<p>いかがだったでしょう。</p>
<p><span class="bold">ド・モルガンの法則や、半加算器と全加算器の仕組みを知っていれば、設問 1 ～設問 3 を瞬時に解けることがわかったでしょう。</span></p>
<p>実際の試験問題には、設問 4 もありますが、記事が長くなってしまうので省略します。設問 4 も、論理演算の種類と機能がわかっていれば、ちゃんと解けますので、どうぞご心配なく。</p>
<div class="divider mag_h50"></div>
<p>ハードウェアの問題は、早い話が 2 進数と論理演算の問題です。</p>
<p>これは、コンピュータの内部では、10 進数による四則演算ではなく、2 進数を使った論理演算が行われているからです。</p>
<p>2 進数と論理演算を苦手にしている人が多いようですが、コンピュータの根本的な動作原理なので、ぜひマスターしてください。</p>
<p>ちゃんとマスターすれば、どの問題でも短時間に解けますよ。</p>
<p>&nbsp;</p>
<p>それではまた、お会いしましょう！</p>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/gogo_arukikata/guide_hw_of_questions_at_pm/">午後問題の歩き方 | 午後問題の読み方～ハードウェア</a> first appeared on <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi">基本情報技術者試験 受験ナビ｜科目A・科目B対策から過去問解説まで 250本以上の記事を掲載</a>.</p>]]></content:encoded>
			</item>
	</channel>
</rss>
