<?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%BC%8F/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi</link>
	<description>基本情報技術者試験を学習する人のためにつくられた専門メディア。250本以上の記事を掲載し、勉強方法や各分野のポイント、過去問解説など、試験に役立つ情報を発信。試験対策書籍を執筆する著者が、はじめて学ぶ人でもわかりやすく解説します。（2023年度からの新制度に対応済み）</description>
	<lastBuildDate>Wed, 10 Jun 2026 00:47:04 +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>基本情報でわかる 論理演算 「真理値表を書けば、半加算器と全加算器の仕組みがわかる」</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>「厳選5題」過去問と解説 &#124; 平成23年度 春期 の過去問やるならこれをやれ</title>
		<link>https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h23_spring/</link>
		<pubDate>Mon, 28 Oct 2019 12:36:12 +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=2493</guid>
		<description><![CDATA[<p>ここでは、平成 23 年度 春期 基本情報技術者試験の午前試験 の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。 やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習し [&#8230;]</p>
<p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h23_spring/">「厳選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_1/2011h23tokubetsu_fe_am_qs.pdf" rel="noopener" target="_blank">平成 23 年度 春期 基本情報技術者試験の午前試験</a> の中から「やるべき問題」を 5 題に厳選し、ぶっちゃけた解説をさせていただきます。</p>
<p>やるべき問題とは、よく出る問題であり、かつ、練習すればできる問題（練習しないとできない問題）です。</p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_one</i></span>これは、ド・モルガンの法則だ！</h2>
<style>.bar{border-top: solid 1px;padding-top: 4px;}.italic-text{font-style:italic;font-family:Times;font-weight:600;}h2 .chip{vertical-align:middle;background:#3f51b5;color:white;margin-right:.75em;}.chip i{font-size:2em!important;}.mag_auto{margin:1.5em auto;}</style>
<div class="card-panel mag_h30">
問 1　(平成 23 年度 春期)</p>
<p>論理式 <span class="italic-text"><span class="bar"> ( <span style="border-top: solid 1px">A</span> + B )・( A + <span style="border-top: solid 1px">C</span> )</span></span> と等しいものはどれか。 ここで，・は論理積，+ は論理和，<span class="italic-text"><span style="border-top: solid 1px">X</span></span> は <span class="italic-text">X</span> の否定を表す。</p>
<p>ア　<span class="italic-text">A・<span style="border-top: solid 1px">B</span> + <span style="border-top: solid 1px">A</span>・C</span><br />
イ　<span class="italic-text"><span style="border-top: solid 1px">A</span>・B + A・<span style="border-top: solid 1px">C</span></span><br />
ウ　<span class="italic-text"> ( A + <span style="border-top: solid 1px">B</span> )・( <span style="border-top: solid 1px">A</span> + C )</span><br />
エ　<span class="italic-text">( <span style="border-top: solid 1px">A</span> + B )・( A + <span style="border-top: solid 1px">C</span> )</span>
</div>
<div class="chip">解説</div>
<p>「問題文に示された論理式と等しい論理式を、選択肢の中から選べ」という問題です。 この手の問題を解くには、以下の 3 つの方法があります。</p>
<ol class="background c-round">
<li>変数に具体的な値（真と偽）を想定して、同じ演算結果になるものを選ぶ</li>
<li>ベン図を書いて、同じ領域になるものを選ぶ</li>
<li>問題文に示された論理式を変形して、選択肢と同じ形にする</li>
</ol>
<p>どの方法でも問題を解くことができますが、効率的に解ける方法を選ぶべきです。</p>
<p>&nbsp;</p>
<p>この問題は、「ド・モルガンの法則」を知っていれば、「3. 問題文に示された論理式を変形して、選択肢と同じ形にする」が効率的だと気付くはずです。</p>
<p>ド・モルガンの法則を堅苦しく示すと、以下のようになります。</p>
<p>ここでは、問題に合わせて、AND（かつ）を ・ 、OR（または） + 、NOT（でない）を ￣ で表しています。</p>
<div class="background c-round">
<h3 class="indigo-text mag_tp00">ド・モルガンの法則</h3>
<p class="post-title italic-text"><span style="border-top: solid 1px">A ・ B</span> ＝ <span style="border-top: solid 1px">A</span> + <span style="border-top: solid 1px">B</span></p>
<p class="post-title italic-text"><span style="border-top: solid 1px">A + B</span> ＝ <span style="border-top: solid 1px">A</span> ・ <span style="border-top: solid 1px">B</span></p>
</div>
<p>このような堅苦しい式を見ると「こんなの覚えられないよ！」と思うでしょう。 ご安心ください。</p>
<p><span class="u">ド・モルガンの法則は、人間の自然な感覚として理解できるもの</span>です。</p>
<p>&nbsp;</p>
<p>式の A に「イケメン」、B に「金持ち」という具体例を入れてみましょう。</p>
<p>以下のようになります。 いかがですか？ 「なんだ、当たり前のことじゃないか！」と納得していただけるでしょう。</p>
<figure><figcaption>図　具体例を入れたド・モルガンの法則</figcaption><img class="materialboxed z-depth-5 responsive-width pad_05" src="../../wp-content/uploads/2019/10/img_de_morgan.png" loading="lazy"><br />
</figure>
<p>それでは、問題を解いてみましょう。</p>
<p>問題文に示された論理式を、ド・モルガンの法則を使って変形すると、以下のようになります。</p>
<div class="card-panel mag_h30">
図　問題文に示された論理式を、ド・モルガンの法則を使って変形する</p>
<p><span class="italic-text"><span class="bar">( <span style="border-top: solid 1px">A</span> + B )・( A + <span style="border-top: solid 1px">C</span> )</span></span></p>
<p>= <span class="italic-text"><span class="bar">( <span style="border-top: solid 1px">A</span> + B )</span> + <span class="bar">( A + <span style="border-top: solid 1px">C</span> )</span></span></p>
<p>= <span class="italic-text"><span class="bar">( <span style="border-top: solid 1px">A</span></span> + <span style="border-top: solid 1px">B</span> ) + ( <span style="border-top: solid 1px">A</span> + <span class="bar"><span style="border-top: solid 1px">C</span> )</span></span></p>
<p><span class="italic-text">= ( A + <span style="border-top: solid 1px">B</span> ) + ( <span style="border-top: solid 1px">A</span> ・ C )</span></p>
<p><span class="italic-text">= A ・ <span style="border-top: solid 1px">B</span> + <span style="border-top: solid 1px">A</span> ・ C</span>
</div>
<p>バーが二重になったときは、否定の否定なので、バーを取ることができます。<br />
・ 演算の方が + 演算より優先順位が高いので、・ 演算を囲むカッコは不要です。</p>
<p>変形した結果は、選択肢アと同じ式になりました。 アが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　ア</p>
<p>&nbsp;</p>
<p><i class="material-icons teal-text text-lighten-2">label</i> 関連タグ: <a href="../../tag/論理式" class="chip teal white-text">論理式</a></p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_two</i></span>状態遷移表で文字列の形式を検査する方法を覚えておこう！</h2>
<div class="card-panel mag_h30">
問 4　(平成 23 年度 春期)</p>
<p>次の表は，文字列を検査するための状態遷移表である。 検査では，初期状態を a とし，文字列の検査中に状態が e になれば不合格とする。</p>
<p>解答群で示される文字列のうち，不合格となるものはどれか。 ここで，文字列は左端から検査し，解答群中の△は空白を表す。</p>
<figure>
  <img class="materialboxed z-depth-5 responsive-width mag_auto" src="../../wp-content/uploads/2019/10/h23s_am_q4_table.png" loading="lazy"><br />
</figure>
<p>ア　+0010　　イ　-1　　ウ　12.2　　エ　9.△</p></div>
<div class="chip">解説</div>
<p>この問題を初めて見た人は、「いったい何がいいたいのかわからない？」と思うでしょう。</p>
<p>この問題は、「与えられた文字列が、特定の形式に合致しているかどうかを、状態遷移意表を使って検査する」というものです。</p>
<p>初期状態が a であり、文字列の検査中に状態が e になったら不合格です（つまり、最後まで検査して e にならなければ合格です）。</p>
<p>あれこれ言葉で説明するより、実際にやってみた方が理解が早いでしょう。</p>
<p>&nbsp;</p>
<p>ここでは、選択肢アの「 +0010 」を検査してみます。</p>
<p>この文字列を左から右に向かって 1 文字ずつ取り出し、その文字の種類に応じて状態を遷移させます。</p>
<p>以下では、現在どの状態にいるのかを、状態を ○ で囲んで示します。 初期状態は a なので、a を <i class="material-icons red-text">panorama_fish_eye</i> で囲みます。</p>
<figure><figcaption>図　初期状態は a である</figcaption><img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2019/10/h23s_am_q4_table_1.png" loading="lazy"><br />
</figure>
<p>「 +0010 」の最初の文字は「 + 」という「符号」なので、表を右にたどって、状態 c に遷移することがわかります。</p>
<figure><figcaption>図　状態 a で「 + 」という「符号」なので状態 c に遷移する</figcaption><img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2019/10/h23s_am_q4_table_2.png" loading="lazy"><br />
</figure>
<p>状態 c に遷移して、「 +0010 」の次の文字は「 0 」という「数字」です。<br />
表を右にたどって、状態 b に遷移することがわかります。</p>
<figure><figcaption>図　状態 c で「 0 」という「数字」なので状態 b に遷移する</figcaption><img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2019/10/h23s_am_q4_table_3.png" loading="lazy"><br />
</figure>
<p>状態 b に遷移して、「 +0010 」の次の文字は「 0 」という「数字」です。<br />
表を右にたどって、状態 b に遷移する（同じ状態のままにする）ことがわかります。</p>
<figure><figcaption>図　状態 b で「 0 」という「数字」なので状態 b に遷移する（同じ状態のままにする）</figcaption><img class="materialboxed z-depth-5 responsive-width" src="../../wp-content/uploads/2019/10/h23s_am_q4_table_4.png" loading="lazy"><br />
</figure>
<p>「 +0010 」のこの後の文字も「 1 」と「 0 」という数字なので、最後の文字を取り出したときの状態は b です。</p>
<p>状態が e にならなかったので、この文字列は合格です。 いかがですか？</p>
<p>「与えられた文字列が、特定の形式に合致しているかどうかを、状態遷移意表を使って検査する」ということの意味を、ご理解いただけたでしょう。</p>
<p>&nbsp;</p>
<p>同様の方法で、選択肢イの「 －1 」を検査すると、最後の文字を取り出したときの状態は b になります（合格です）。<br />
選択肢ウの「 12.2 」を検査すると、最後の文字を取り出したときの状態は e になります（不合格です）。<br />
選択肢エの「 9.△ 」を検査すると、最後の文字を取り出したときの状態は a になります（合格です）。</p>
<p>したがって、ウが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　ウ</p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_3</i></span>伸びて行くから「木」なのです！</h2>
<div class="card-panel mag_h30">
問 5　(平成 23 年度 春期)</p>
<p>空の 2 分探索木に，8，12， 5， 3，10，7， 6 の順にデータを与えたときにできる 2 分探索木はどれか。 ア　パスワードに対応する利用者 ID のハッシュ値を登録しておき，認証時に入力された利用者 ID をハッシュ関数で変換して参照した登録パスワードと入力パスワードを比較する。</p>
<div class="flex wrap">
<div class="col s6 m3">
ア</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_option_a.png" loading="lazy"></figure>
</div>
<div class="col s6 m3">
イ</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_option_i.png" loading="lazy"></figure>
</div>
<div class="col s6 m3">
ウ</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_option_u.png" loading="lazy"></figure>
</div>
<div class="col s6 m3">
エ</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_option_e.png" loading="lazy"></figure>
</div>
</div>
</div>
<div class="chip">解説</div>
<p>二分探索木は、1 つのデータが 2 つに枝分かれして、より小さいデータを左側に、より大きいデータを右側につないだものです。</p>
<p>枝分かれするので木なのですが、もう 1 つ、木らしい特徴があります。</p>
<p>それは、データを与えることで、徐々に伸びていくことです。</p>
<p>この問題では、8 、12 、5 、3 、10 、7 、6 の順にデータが与えられます。 これによって、以下の手順で木が伸びていきます。</p>
<p class="mag_h20">図　データを与えることで木が伸びていく</p>
<div class="flex wrap">
<div class="col s4 center">
手順1. 8 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_1.png" loading="lazy"></figure>
</div>
<div class="col s4 center">
手順2. 12 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_2.png" loading="lazy"></figure>
</div>
<div class="col s4 center">
手順3. 5 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_3.png" loading="lazy"></figure>
</div>
<div class="col s4 center">
手順4. 3 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_4.png" loading="lazy"></figure>
</div>
<div class="col s4 center">
手順5. 10 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_5.png" loading="lazy"></figure>
</div>
<div class="col s4 center">
手順6. 7 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_6.png" loading="lazy"></figure>
</div>
<div class="col s4 center">
手順7. 6 を与える</p>
<figure><img class="hoverable materialboxed" src="../../wp-content/uploads/2019/10/h23s_am_q5_step_7.png" loading="lazy"></figure>
</div>
</div>
<p>最後のデータの 6 を与えた時点で、選択肢エと同じ形状の木になりました。 エが正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　エ</p>
<h2><span class="chip">厳選問題<i class="material-icons mag_lt05">looks_4</i></span>計算問題への苦手意識を克服しよう！(その 1 )</h2>
<div class="card-panel mag_h30">
問 19　(平成 23 年度 春期)</p>
<p>Web サーバとデータベースサーパ各 1 台で構成されているシステムがある。 次の運用条件の場合，このシステムでは最大何 TPS 処理できるか。 ここで，各サーバの CPU は， 1 個とする。</p>
<p>〔運用条件〕</p>
<ol class="mag_h30">
<li>トランザクションは，Web サーバを経由し，データベースサーバで SQL が実行される。</li>
<li>Web サーバでは，1 トランザクション当たり，CPU 時間を1ミリ秒使用する。</li>
<li>データベースサーバでは，1 トランザクション当たり，データベースの 10 データブロックにアクセスする SQL が実行される。 1 データブロックのアクセスに必要なデータベースサーバの CPU 時間は，0.2 ミリ秒である。</li>
<li>CPU 使用率の上限は，Web サーバが 70 % ，データベースサーバが 80 % である。 </li>
<li>トランザクション処理は，CPU 時間だけに依存し，Web サーバとデータベースサーバは互いに独立して処理を行うものとする。</li>
</ol>
<p>ア　400　　イ　500　　ウ　700　　エ　1,100
</p></div>
<div class="chip">解説</div>
<p>筆者の講師経験上、「計算問題が苦手です！」という人が多いようです。 しかし、それは多くの場合、<span class="bold">誤解</span>です。</p>
<p>基本情報技術者試験の計算問題を解くために、<span class="bold">特殊な計算式を知っている必要はなく、複雑な計算も要求されない</span>からです。 どの問題も<span class="u">「仕組みを知っていれば計算できるよね！」</span>という趣旨のものです。 問題が解けないのは、<span class="bold">計算が苦手だからではなく、仕組みを知らないから</span>です。</p>
<p>それに気付いて、苦手意識を克服していただくために、この問題を解いてみましょう。</p>
<blockquote class="background">
<p class="mag_h05 bold">「 TPS って何だか知っていますか？」<br />
「システムの性能は、ボトルネックとなる部分（最も遅い部分）で決まることを知っていますか？」</p>
</blockquote>
<p>という問題です。</p>
<p>まず、Web サーバーの TPS ( Transactions Per Second 、1 秒間に処理できるトランザクションの数) を求めてみましょう。</p>
<p>1トランザクション当たり CPU 時間を 1 ミリ秒を使用するのですから、</p>
<div class="background c-round">
1 秒 ÷ 1 ミリ秒 ＝ 1000 TPS
</div>
<p>です。</p>
<p>ただし、CPU 使用率の上限が 70 % なので、実際には、</p>
<div class="background c-round">
1000 TPS × 0.7 ＝ 700 TPS
</div>
<p>になります。</p>
<p>&nbsp;</p>
<p>次に、データベースサーバの TPS を求めてみましょう。</p>
<ol class="background c-round">
<li>1 トランザクション当たり、データベースの 10 ブロックにアクセスする SQL を実行し、</li>
<li>1 データブロックのアクセスに必要なCPU 時間が 0.2 ミリ秒なので、</li>
<li>1 トランザクション当たり 10 × 0.2 ミリ秒 ＝ 2 ミリ秒の CPU 時間を使います。</li>
</ol>
<p>TPS は、1 秒 ÷ 2 ミリ秒 ＝ 500 TPS ですが、CPU 使用率の上限が 80 % なので、実際には、</p>
<div class="background c-round">
500 TPS × 0.8 ＝ 400 TPS
</div>
<p>になります。</p>
<p>Web サーバが 700 TPS で、データベースサーバが 400 TPS なので、遅い方のデータベースサーバがボトルネックとなって、このシステムの性能は、400 TPS です。 アが正解です。</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>計算問題への苦手意識を克服しよう！(その 2 )</h2>
<div class="card-panel mag_h30">
問 23　(平成 23 年度 春期)</p>
<p>Java などのバイトコードプログラムをインタプリタで実行する方法と，コンパイルしてから実行する方法を次の条件で比較するとき，およそ何行以上のバイトコードであれば，コンパイル方式の方がインタプリタ方式よりも処理時間 (コンパイル時間も含む) が短くなるか。</p>
<p>〔条件〕</p>
<ol>
<li>実行時間はプログラムの行数に比例する。</li>
<li>同じ 100 行のパイトコードのプログラムをインタプリタで実行すると 0.2 秒掛かり，コンパイルしてから実行すると 0.003 秒掛かる。</li>
<li>コンパイル時間は 100 行当たり 0.1 秒掛かる。</li>
<li>コンパイル方式の場合は，プログラムの行数に関係なくファイル入出力，コンパイラ起動などのために常に 0.15 秒のオーバヘッドが掛かる。</li>
<li>プログラムファイルのダウンロード時間など，そのほかの時間は無視して考える。</li>
</ol>
<p>ア　50　　イ　75　　ウ　125　　エ　155
</p></div>
<div class="chip">解説</div>
<p>計算問題への苦手意識を克服するために、もう 1 問やってみましょう。</p>
<p>これは、</p>
<blockquote class="background">
<p class="mag_h05 bold">「インタプリタで実行する場合と、コンパイラで実行する場合で、それぞれに必要とされる時間を知っていますか？」</p>
</blockquote>
<p>という問題です。</p>
<p>バイトコードの行数を b 行（ b は、バイトコードの頭文字です）として、それぞれの実行時間を求めてみましょう。</p>
<p>&nbsp;</p>
<p>インタプリタで実行する場合に必要とされるのは、コードの解釈・実行時間だけです。</p>
<p>ここでは、</p>
<p>100 行のバイトコードあたり 0.2 秒かかるので、 b 行では、</p>
<div class="background c-round">( b / 100 ) × 0.2 秒</div>
<p>かかります。</p>
<p>コンパイラで実行する場合に必要とされるのは、コンパイル時間、実行時間、その他のオーバーヘッドの時間です。</p>
<dl class="background c-round">
<dt class="bold">コンパイル時間</dt>
<dd>100 行当たり 0.1 秒かかる</dd>
<dd>b 行では、( b / 100 ) × 0.1 秒かかる</dd>
<dt class="bold">実行時間</dt>
<dd>100 行当たり 0.003 秒</dd>
<dd>b 行では、( b / 100 ) × 0.003 秒かかる</dd>
<dt class="bold">その他のオーバーヘッドの時間</dt>
<dd>行数に関係なく 0.15 秒かかる</dd>
</dl>
<p>以上を合計すると、</p>
<div class="background c-round">
( b / 100 ) × 0.1 秒 + ( b / 100 ) × 0.003 秒 + 0.15 秒
</div>
<p>になります。</p>
<p>&nbsp;</p>
<p>この問題は、「コンパイラの処理時間 ＜ インタプリタの処理時間」となる行数を求めるものなので、以下の不等式を解いて、</p>
<div class="background c-round">
( b / 100 ) × 0.1 秒 + ( b / 100 ) × 0.003 秒 + 0.15 秒 ＜ ( b / 100 ) × 0.2 秒<br />
b ＞ 154.6・・・
</div>
<p>となります。 したがって、エの 155 が正解です。</p>
<p>&nbsp;</p>
<p><span class="chip">解答</span>　エ</p>
<div class="divider mag_tp60 mag_bt30"></div>
<p>記事をお読みいただきありがとうございます。</p>
<p>もしも、一度解いただけでは、よくわからない問題があったなら、わかるまで何度でも練習してください。 <span class="bold">「やるべき問題」は「わかるまでやるべき問題」</span>だからです。</p>
<p>この厳選問題大全集が、受験者の皆様のお役に立てば幸いです。</p>
<p>&nbsp;</p><p>The post <a href="https://www.seplus.jp/dokushuzemi/ec/fe/fenavi/kakomon-gensen/h23_spring/">「厳選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>「厳選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>
	</channel>
</rss>
