ビットパターンの計算問題|かんたん計算問題


2020-03-19 更新
かんたん計算問題とは
この連載では、基本情報技術者試験で、多くの受験者が苦手意識を持っている「計算問題」に的を絞って、問題の解き方をやさしく説明します。

今回のテーマは、「ビットパターン」の計算問題です。はじめに、ビットパターンの意味を説明します。それがわかったら、過去問題を解いてみましょう。

様々な分野で出題されていますが、ビットパターンの意味をきちんと理解できていれば、どんな分野の問題でも解けるはずです。

ビットパターンとは?

「ビットパターン」とは、特定のビット数(桁数)で表せる 2 進数のデータの種類(パターン)のことです。

たとえば、1 ビットで表せるビットパターンは、 0 と 1 の 2 通りです。

  • 2 ビットなら、00 、01 、10 、11 の 4 通り
  • 3 ビットなら、000 、001 、010 、011 、100 、101 、110 、111 の 8 通り

当然のことですが、ビット数が多いほど、表せるビットパターンの種類も多くなります。

それでは、8 ビットで表せるビットパターンは、何通りでしょう? すべてのビットパターンを書き出して数える必要はありません。

何ビットの 2 進数であっても、それぞれの桁は 0 と 1 の 2 通りに変化します。したがって、

1 ビットなら 2 通り
2 ビットなら 2 × 2 = 4 通り
3 ビットなら 2 × 2 × 2 = 8 通り

になるのです。ビット数だけ 2 を掛ければよいのです。このことから、 8 ビットなら、2 を 8 回掛けて、

2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 256 通り

だとわかります。

 

何度も掛け算をする式を書くのは面倒なので、べき乗の表現を使うことにしましょう。

たとえば、8 ビットで表せるビットパターンは、2 を 8 回掛けるので 28 通りと表せます。

それでは、N ビットで表せるビットパターンの数を、べき乗の表現を使って表すとどうなるでしょう?

2 を N 回掛けるので 2N 通りです。

 

コンピュータの内部では、電線を使って 2 進数のデータを伝えています。1 本の電線で 1 ビットの 2 進数を表します。

それでは、256 種類のビットパターンを表すには、何本の電線が必要でしょう? 先ほど説明したように、8 ビットで表せるビットパターンは 256 通りです。

電線 1 本でビットを表すので、 8 本の電線があれば 256 種類のビットパターンを表せます。電線の本数 = ビット数というイメージをつかんでください。

 

特定のビット数(電線なら本数)で表せるビットパターンの数は、 2 のべき乗で示せます。

20 から 210 までのビットパターンの数が 10 進数でいくつになるかを覚えておくとよいでしょう。8 を「ぱあ」、64 を「ろくよん」のように、IT 業界特有の読み方をするものもあります。

下図にまとめておきますので、

「いち、に、よん、ぱあ、じゅうろく、さんじゅうに、ろくよん、いちにっぱ、にごろ、ごーいちに、せんにじゅうよん」

と、何度も声に出して読んでみましょう。

そして、これらの数を見たら「これは 2 のべき乗だ!」とピンと来るようになってください。ピンと来ることで解ける問題が出題されているからです。

図 2 のべき乗と 10 進数(ビットパターンの数)
べき乗 20 21 22 23 24 25
10進数 1 2 4 8ぱあ 16 32
べき乗 26 27 28 29 210
10進数 64ろくよん 128いちにっぱ 256にごろ 512ごーいちに 1024
IT 業界特有の読み方をするものにタグをつけています

 

label関連タグ2 のべき乗2 進数

ビット数からビットパターンを求める問題

問 4 (平成 28 年度 秋期)

32 ビットで表現できるビットパターンの個数は,24 ビットで表現できる個数の何倍か。

ア 8  イ  16  ウ 128  エ 256

それでは、過去問題を解いてみましょう。はじめは、情報の基礎理論の分野の問題です。

この記事の冒頭で説明したように、N ビットで表せるビットパターンの数は、2 を N 回掛けるので 2N 通りです。

32 ビットで表せるのは 232 通りで、
24 ビットで表せるのは 224 通りです。

232 通りは、224 通りの、

232 ÷ 224
= 28
= 256 倍

です。

したがって、選択肢エが正解です。

正解

コード化に必要なビット数を求める問題

問 4 (平成 24 度 秋期)

英字の大文字 ( A ~ Z ) と数字 ( 0 ~ 9 ) を同一のビット数で一意にコード化するには,少なくとも何ビットが必要か。

ア 5  イ 6  ウ 7  エ 8

次も、情報の基礎理論の分野の問題です。

コード化とは、本来なら数値でないデータを、数値に置き換えることです。英字の大文字の A ~ Z は 26 種類で、数字の 0 ~ 9 は 10 種類なので、両方を合わせると 36 種類あります。

これらの文字を数値に置き換えるには少なくとも何ビット必要か、つまり 36 種類のビットパターンを得るには、少なくとも何ビットあればよいかを考えてください。

ビットパターンの数は、

  • 1 ビットで 21 = 2 通り
  • 2 ビットで 22 = 4 通り
  • 3 ビットで 23 = 8 通り
  • 4 ビットで 24 = 16 通り
  • 5 ビットで 25 = 32 通り

となりますが、まだ 36 通りには足りません。さらに、

  • 6 ビットで 26 = 64 通り

となり、ようやく 36 通りを表せます。

したがって、選択肢イが正解です。

文字に割り当てないビットパターンが、64 通り- 36 通り = 28 通りもあって、もったいないようですが、仕方ありません。

下図に、6 ビットのビットパターンを 36 通りの文字に割り当てた例を示します。

図 6 ビットのビットパターンを36通りの文字に割り当てた例
ビットパターン 文字
000000 A
000001 B
: :
11001 Z
11010 0
: 1
: :
100011 9
100100 (未使用)
: :
111111 (未使用)

正解

メモリのアドレスバスの本数を求める問題

問 11 (平成 28 年度 秋期)

1 M バイトのメモリを図のように MPU に接続するとき,最低限必要なアドレスバスの信号線の本数 n はどれか。ここで,メモリにはバイト単位でアクセスするものとし、1 M バイトは 1,024k バイト,1k バイトは 1,024 バイトとする。

ア 18  イ 19  
ウ 20  エ 21

今度は、ハードウェアの分野の問題です。

アドレスバスとは、メモリのアドレスを指定する信号線(電線)のことです。メモリの中には、1 バイトの大きさのデータの入れ物が数多く用意されています。

メモリのアドレスは、それぞれの入れ物を識別するための番号です。1 本のアドレスバスで、1 桁の 2 進数を伝えられます。

メモリの記憶容量は、

1 M バイト
= 1k × 1k バイト
= 1,024 × 1,024 バイト

なので、このメモリの中には、1,024 × 1,024 個の入れ物があります。

この 1,024 という数字を見て、ピンと来てください。

1,024 は、2 のべき乗であり、1,024 = 210 です。

1,024 × 1,024
= 210 × 210
= 220

です。

220 は、20 ビットのビットパターンであり、20 本の電線で表せます。

20 本の電線で表すビットパターンを、1,024 × 1,024 個の入れ物に割り当て、それぞれを識別するアドレスにするのです。

したがって、選択肢ウが正解です。

メモリの入れ物とアドレスのイメージを下図に示します。

20ビットのアドレス メモリの入れ物
00000000000000000000 1バイトのデータ
00000000000000000001 1バイトのデータ
11111111111111111110 1バイトのデータ
11111111111111111111 1バイトのデータ

正解 ウ

接続可能なホストの最大数を求める問題

問 35 (平成 26 年度 春期)

IPv4 で 192.168.30.32/28 のネットワークに接続可能なホストの最大数はどれか。

ア 14  イ 16  
ウ 28  エ 30

次は、ネットワークの分野の問題です。

IPv4( IP version 4 )では、IP アドレスを 32 ビットで表して、上位桁をネットワークアドレス( LAN の識別番号)とし、下位桁をホストアドレス(個々の通信機器の番号)としています。

ここでは、/28 という CIDR(サイダー)表記で、上位桁が 28 ビットであることを示しています。全部で 32 ビットあるのですから、残りの 32 – 28 = 4 ビットが下位桁です。

4 ビットの下位桁で表せるビットパターンは、24 = 16 通りです。

ただし、すべての桁が 0 のビットパターンと、すべての桁が 1 のビットパターンは、ホストアドレスとして使えない約束になっています。

すべての桁が 0(ここでは 0000 )
ホストアドレスを無設定として、ネットワークアドレスだけを示す
すべての桁が 1(ここでは 1111 )
同じ LAN 内のすべてのホストをあて先とするブロードキャスト(一斉同報)に使う

16 通りから、これら 2 つを除いた 16 – 2 = 14 通りのビットパターン( 0001 ~ 1110 )が、ホストに割り当て可能です。

したがって、選択肢アが正解です

正解

 

label関連タグIP アドレス

ブルートフォース攻撃の試行回数の最大値を求める問題

問 37 (平成 30 年度 秋期)

AES-256 で暗号化されていることが分かっている暗号文が与えられているとき,ブルートフォース攻撃で鍵と解読した平文を得るまでに必要な試行回数の最大値はどれか。

ア 256  イ 2128  ウ 2255  エ 2256

最後は、セキュリティの分野の問題です。

ブルートフォース( brute force = 暴力、力ずく)攻撃とは、様々な数字の鍵を試行して、暗号文を解読することです。

たとえば、鍵が 4 ビットなら、24 = 16 通りのビットパターンを鍵として試行することで、暗号文を解読できます。

ただし、こんなに少ない試行回数では、すぐに解読されてしまうので、実際の暗号文では、もっと大きなビット数の鍵が使われています。

この問題では、その例として、AES-256 という暗号化技法を取り上げているのです。

 

AES は、Advanced Encryption Standard(高度な暗号化の標準)の略で、共通鍵暗号アルゴリズムの一種です。それでは、256 とはなんでしょう?

「ピンと来た! 256 は、2 のべき乗だ! 28 = 256 だから、AES-256 は、8 ビットのビットパターンを鍵としているのだろう。したがって、正解は、選択肢アだ」

と思われるかもしれませんが、それは早合点です 😅😅😅

8 ビットのビットパターンは、28 = 256 通りです。

こんなに少ない試行回数では、コンピュータを使えば、すぐに解読されてしまいます。

実は、AES-256 は、256 ビットのビットパターンを鍵としているのです。

このビットパターンの数は、

2256 ≒ 1.16 × 1077 通り

になります。これだけ多くの試行回数なら、コンピュータを使っても、そう簡単には解読されません。

したがって、選択肢エが正解です。

正解

以上、「ビットパターン」の計算問題の解き方を説明しましたが、十分にご理解いただけましたでしょうか。

もしも、すぐに理解できない問題があったなら、同じ問題を繰り返し練習してください。

基本情報技術者試験では、同じ問題が何度も再利用されているので、できない問題をできるようにすることが、必ず得点アップにつながるからです。

それでは、またお会いしましょう!

 

label 関連タグ
実は、午前試験を『免除』できます 独習ゼミで午前免除試験を受けた 86% の方が、
午前試験を免除しています。
今なら最大 2 回の
午前免除チャンス
info_outline
今なら最大 2 回の
午前免除チャンス
詳しく見てみるplay_circle_filled
label これまでの『苦手克服!かんたん計算問題』の連載一覧 label 著者

『プログラムはなぜ動くのか』(日経BP)が大ベストセラー
IT技術を楽しく・分かりやすく教える“自称ソフトウェア芸人”

大手電気メーカーでPCの製造、ソフトハウスでプログラマを経験。独立後、現在はアプリケーションの開発と販売に従事。その傍ら、書籍・雑誌の執筆、またセミナー講師として活躍。軽快な口調で、知識0ベースのITエンジニアや一般書店フェアなどの一般的なPCユーザの講習ではダントツの評価。
お客様の満足を何よりも大切にし、わかりやすい、のせるのが上手い自称ソフトウェア芸人。

主な著作物

  • 「プログラムはなぜ動くのか」(日経BP)
  • 「コンピュータはなぜ動くのか」(日経BP)
  • 「出るとこだけ! 基本情報技術者」 (翔泳社)
  • 「ベテランが丁寧に教えてくれる ハードウェアの知識と実務」(翔泳社)
  • 「ifとelseの思考術」(ソフトバンククリエイティブ) など多数