検索
連載

コンピュータの基本、2進数を理解しよう基本情報技術者試験講座(1)

エンジニアなら避けては通れない、情報処理技術者試験。すべての試験の基礎となるのは、基本情報技術者試験だ。そのうちの午前試験に必要な知識を本連載でマスターし、秋期試験合格を目指そう!

Share
Tweet
LINE
Hatena

 今回から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.

ページトップに戻る