コンピュータの基本、2進数を理解しよう:基本情報技術者試験講座(1)
エンジニアなら避けては通れない、情報処理技術者試験。すべての試験の基礎となるのは、基本情報技術者試験だ。そのうちの午前試験に必要な知識を本連載でマスターし、秋期試験合格を目指そう!
今回から5回にわたって「基本情報技術者試験(午前)」の対策講座を掲載します。内容としては、試験によく出題されている部分にポイントを絞ります。頻出する部分を問題形式で取り上げますので、確実に点数を取れるよう、試験対策や試験直前の確認用として利用してください。
「基本情報技術者試験(午前)」の問題数、合格点と試験範囲は下記のとおりです(☆の数は出題数を5段階で表したもの)。
問題数 | 80問 |
---|---|
合格点 | 公開はされていませんが、70〜75%で合格とされています。 |
試験時間 | 150分 |
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
なお、試験は年2回(春期・秋期)実施されます。試験は午前と午後に分かれていて、午前は主に知識問題、午後はプログラミングや知識の応用問題が出題されます。今回触れない午後の問題では、長文の応用問題が13問出題され、そのうち7問を選んで解答する形式になっています(試験時間は午前同様150分)。
以降は「基本情報技術者試験(午前)」を上記の範囲に沿って、各種問題を解きながら解説していきます。
コンピュータ科学基礎 〜情報の基礎論理〜
確認しておく内容
- 基数と基数変換
- 補数
- 論理シフト、演算
- 文字の表現
基数と基数変換
数値を表現する際に、各けたの重み付けの基礎として用いる数を「基数」と呼びます。わたしたちが一般的に使用している10進数の場合、右から順に「1の位」「10の位」「100の位」というように10倍ごとにけたが繰り上がるため、「基数は10」となります。同様に、2進数、8進数、16進数の基数は、それぞれ2、8、16となります。例えば2進数の場合、右から順に「1の位」「2の位」「4の位」「8の位」のように2倍ごとにけたが繰り上がります。
10進数は、「0」から「9」までの10種類の数字を用います。しかし、コンピュータの電子回路は基本的に10種類もの数字を扱うようにはできていません。よってすべての数値を2進数に置き換え、「0」と「1」の2種類の数字をスイッチのON/OFFに対応させて処理をしています。
それでは、基数変換の問題を解いてみましょう。
■問題1
10進数の「100」を8けたの2進数で表したものを次の中から選択してください。
a.01101010
b.01110100
c.01100100
d.01100110
正解:c
■解説
10進数を2進数へ変換するには、10進数で表現された数値を2進数の基数「2」で割っていきます。割り切れれば0を、割り切れなければ余りの1を記入し、その商をまた2で割ります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
商が0になったところで、余りを下から並べます。並べると「1100100」となりますので、正解はcの「01100100」です。
余りを並べる順番(下から)を忘れないようにしましょう。
■問題2
2進数の「10110001」を10進数に変換したものを次の中から選択してください。
a.169
b.177
c.175
d.172
正解:b
■解説
2進数を10進数へ変換するには、まず2進数の各けたの重みを10進数に直してみます。重みは基数の乗数で表せますので、右から「1、2、4、8……」となります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
対応する2進数のけたが「1」になっているところの重みを足すと、「128+32+16+1=177」となります。正解はbの「177」です。
■問題3
10進数の「0.4375」を2進数に変換したものを次の中から選択してください。
a.0.1111
b.0.1001
c.0.0111
d.0.011
正解:c
■解説
2進数の小数点以下nけたには、2 の-n乗の重みが付いています。各けたの重みは下記のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
問題2と同じく、2進数の値が1となっているけたの重みを足すことにより、10進数へ変換できます。選択肢に挙げられている2進数をすべて10進数へ変換し、「0.4375」になるものを探します。
「0.1111」 → 0.5+0.25+0.125+0.0625=0.9375
「0.1001」 → 0.5+0.0625=0.5625
「0.0111」 → 0.25+0.125+0.0625=0.4375
「0.011」 → 0.25+0.125=0.375
上記より、正解はcの「0.0111」です。
■問題4
16進数の「AB」を10進数で表すといくつになりますか。次の中から選択してください。
a.166
b.171
c.175
d.179
正解:b
■解説
16進数の基数は16であり、10進数の0〜15を1けたで表します。10進数の10〜15は、0123456789ABCDEFというように、英字のA〜Fで表します。
16進数で表した値を10進数へ変換するには、2進数から10進数への変換と同様、各けたの重みを足します。16進数であれば下記のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
16進数の「A」「B」はそれぞれ10進数の「10」「11」ですので、この重みを利用して計算すると「16×A+1×B=16×10+1×11=171」となり、正解はbの「171」です。
また、16進数をいったん2進数に変換し、それを10進数に変換するという方法もあります。
16進数の1けたは、4けたの2進数で表されます。この問題の16進数「AB」は、A→1010 B→1011となり、2進数の「10101011」と同じです。
次に、この2進数「10101011」を下記のように重みを利用して変換します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
「128+32+8+2+1=171」となり、正解はbの「171」です。
16進数から10進数への変換は、2進数を経由した方が手間はかかりますが、覚えることが少ないので簡単です。どちらの方法を使用しても構いませんが、計算間違いをしないよう気を付けてください。
■問題5
計算式「131−45=53」 は、何進法で成立しますか。
a.5
b.6
c.7
d.8
正解:c
■解説
まず、問題の計算式を分かりやすいように足し算に直すと「131=53+45」となります。
ここで最下位の1けたに注目します。最下位の1けたを10進数で計算すると「3+5=8」ですが、この計算式では「1」となっています。けたの繰り上げが発生していると考えられ、「3+5−1=7」でけたが繰り上げられたことから、7進法で計算していることが分かります。正解はcの「7」です。
補数
Copyright © ITmedia, Inc. All Rights Reserved.