n進数の基数変換と必要なビット数
16進・2進の小数を10進に直す(その逆も)計算と、「何ビット必要か」「何倍か」を2のべき乗で即答する計算ができるようになる。あわせて、何進法で式が成り立つかの判定、2進で無限小数になる判定、UCS-2の説明も選べるようになる。
コンピュータの中身はすべて0と1(2進数)で、人が読むときは16進数を使います。そのため変換とビット数の計算は科目Aの問1あたりで毎回のように出る、取りこぼせない得点源です。
このレッスンで稽古する(用語チェック・過去問)結論:n進数は「桁の重み」を掛けて足すだけ
n進数(基数nの数)は、各桁に「nのべき乗」の重みが付いた数です。基数とは「何個たまったら次の桁へ繰り上がるか」の数で、10進なら10、2進なら2、16進なら16です。小数点より右の桁は、n^-1、n^-2…という負のべき乗の重みになります。
たとえるなら硬貨の金種です。10進は「1円玉・10円玉・100円玉」、2進は「1・2・4・8…円玉」の世界で、金種ごとの枚数を書いたものが数字の並びだと考えてください。
| 桁の位置 | 10進の重み | 2進の重み | 16進の重み |
|---|---|---|---|
| 左から2桁目(整数) | 10 | 2 | 16 |
| 1の位 | 1 | 1 | 1 |
| 小数第1位 | 1/10 | 1/2 | 1/16 |
| 小数第2位 | 1/100 | 1/4 | 1/256 |
| 小数第3位 | 1/1000 | 1/8 | 1/4096 |
16進数では10〜15を1文字で書くため、A=10、B=11、C=12、D=13、E=14、F=15 を使います。ここは丸暗記してください。
n進小数→10進(最頻出)
出題回数がいちばん多いのがこの型です。手順は次の2つのどちらかを使います。
- 桁ごとに重みを掛けて足す:0.C(16) = 12 × 16^-1 = 12/16 = 0.75
- まとめて割る(近道):小数点以下が k 桁なら、数字の並びを整数として読み、n^k で割る。0.248(16) なら 248(16)=584 を 16^3=4096 で割って 584/4096 = 73/512
近道2は、10進の 0.248 = 248/1000 と同じ考え方を16進に当てはめたものです。分母は 10^k ではなく n^k になる点だけ注意してください。選択肢が分数のときは近道2、小数のときは近道1が速いです。
10進→2進小数:割り算なら「小数点を左へずらす」
「7÷32」のように 2のべき乗で割る式は、割る数が 2^k なら、割られる数を2進にしてから小数点を左へ k 桁ずらすだけです。32 = 2^5 なので、7 = 111(2) の小数点を5桁左へずらして 0.00111 になります。
普通の10進小数(例:0.375)を2進にするときは、2を掛けて整数部を取り出す作業をくり返します。
| 計算 | 結果 | 取り出す整数部 |
|---|---|---|
| 0.375 × 2 | 0.75 | 0 |
| 0.75 × 2 | 1.5 | 1 |
| 0.5 × 2 | 1.0 | 1 |
上から順に並べて 0.375 = 0.011(2) です。小数部が0になったら終わりです。
2進で有限小数か無限小数か
既約分数(これ以上約分できない分数)にしたとき、分母が2のべき乗(2,4,8,16…)なら有限、それ以外の素因数(3や5など)を含むと無限小数になります。10進で 1/3 が 0.333… と終わらないのと同じ理屈です。
| 10進小数 | 分数にすると | 分母 | 2進では |
|---|---|---|---|
| 0.5 | 1/2 | 2 | 有限(0.1) |
| 0.125 | 1/8 | 8 = 2^3 | 有限(0.001) |
| 0.375 | 3/8 | 8 = 2^3 | 有限(0.011) |
| 0.05 | 1/20 | 20 = 4×5 | 無限 |
| 0.1 | 1/10 | 10 = 2×5 | 無限 |
「10進で有限だから2進でも有限」は成り立ちません。分母に5が残るかどうかを見ます。
何進法で式が成り立つか(基数の特定)
基数を n と置き、各数を「n のべき乗の和」に展開して方程式を解きます。131(n) = n²+3n+1、45(n) = 4n+5 のように書けます。
式に出てくる最大の数字が5なら「6進以上」とは言えますが、それは下限にすぎません。試験では選択肢の基数を実際に代入して確かめるのが確実です。7進なら 131=71、45=33、53=38 で、71−33=38 と成立します。
必要なビット数とビットパターンの個数
ビットは0か1の1桁、バイトは8ビットです。n ビットで作れるビットパターン(0と1の並び)は 2^n 通りです。ここからすべて導けます。
| ビット数 | 2^n(区別できる種類) | 目安 |
|---|---|---|
| 4 | 16 | 16進1桁分 |
| 5 | 32 | 英大文字26種は入る |
| 6 | 64 | 英大文字+数字36種が入る |
| 7 | 128 | ASCIIの範囲 |
| 8 | 256 | 1バイト |
- 何ビット必要か:種類数以上になる最小の 2^n を探す。36種なら 2^5=32 では足りず 2^6=64 で 6ビット。
- 何倍か:2^32 ÷ 2^24 = 2^(32−24) = 2^8 = 256倍。ビット数の差8をそのまま答えにしない。
- 0と1が4個ずつで最大の8ビット:大きい桁に1を寄せた 11110000(2) = 128+64+32+16 = 240。
10進の桁数と2進の桁数(対数)
出題は少ないので結論だけ覚えます。2進 B 桁で表せる大きさは約 2^B、10進 D 桁なら約 10^D なので、2^B ≒ 10^D と置きます。両辺の常用対数(底が10の対数、log10)をとると D ≒ B log10 2 です。
確かめ方:log10 2 ≒ 0.3 なので D は約 0.3B です。2^10 = 1024 ≒ 10^3 なので、B=10 のとき D≒3 となり、式と合います。1024 自体は4桁ですが、この近似は桁数そのものではなく 10^D の指数で見ているので、実際の桁数とは1ずれることがあります。
文字コード:UCS-2 は「全部2バイト」
文字コードは、文字に番号(ビットパターン)を割り当てる約束事です。出題は少ないですが、選択肢の見分けだけ押さえます。
| 文字コード | 1文字のバイト数 | 特徴 |
|---|---|---|
| ASCII | 1バイト(7ビット) | 英数字・記号のみ |
| シフトJIS | 英数字1・漢字2 | JISから派生、Windowsで普及 |
| EUC-JP | 英数字1・漢字2 | 主にUNIXで使用 |
| UCS-2 | すべて2バイト固定 | Unicode系、多言語に対応 |
| UTF-8 | 1〜4バイト(可変長) | Unicode系、Webで主流 |
16進小数 0.C を10進にする
ア 0.12
イ 0.55
ウ 0.75
エ 0.84
出典:令和5年度 基本情報技術者試験 科目A 公開問題 問1
解き方と答えを見る
- C は16進で 12 を表す
- 小数第1位の重みは 16^-1 = 1/16
- 0.C(16) = 12 × 1/16 = 12/16
- 12/16 = 3/4 = 0.75
答え:ウ:0.75
16進小数 0.248 を10進の分数にする
ア 31/32
イ 31/125
ウ 31/512
エ 73/512
解き方と答えを見る
- 小数点以下が3桁なので、248(16) を 16^3 で割る
- 248(16) = 2×256 + 4×16 + 8 = 512 + 64 + 8 = 584
- 16^3 = 4096 なので 584/4096
- 分子・分母を8で割って約分:584÷8 = 73、4096÷8 = 512
- 73 は奇数なのでこれ以上約分できない
答え:エ:73/512
7÷32 を2進数で表す
ア 0.001011
イ 0.001101
ウ 0.00111
エ 0.0111
解き方と答えを見る
- 32 = 2^5 なので、7÷32 = 7 × 2^-5
- 7 を2進にすると 111
- 2^-5 を掛ける=小数点を5桁左へずらす:111 → 0.00111
- 検算:0.00111 = 1/8 + 1/16 + 1/32 = 4/32 + 2/32 + 1/32 = 7/32
答え:ウ:0.00111
2進で無限小数になるものを選ぶ
ア 0.05
イ 0.125
ウ 0.375
エ 0.5
出典:基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問1
解き方と答えを見る
- 各選択肢を既約分数にする
- 0.05 = 5/100 = 1/20、0.125 = 1/8、0.375 = 3/8、0.5 = 1/2
- 分母を素因数に分ける:20 = 2×2×5、8 = 2×2×2、2 = 2
- 分母に5を含むのは 1/20 だけなので、0.05 だけが無限小数
答え:ア:0.05
131 − 45 = 53 が成り立つ基数を求める
ア 6
イ 7
ウ 8
エ 9
出典:基本情報技術者試験 科目A免除 修了試験 20140622 実施分 問1
解き方と答えを見る
- 基数を n と置いて展開:131 = n²+3n+1、45 = 4n+5、53 = 5n+3
- 式を立てる:(n²+3n+1) − (4n+5) = 5n+3
- 左辺を整理:n² − n − 4 = 5n + 3
- 移項:n² − 6n − 7 = 0
- 因数分解:(n−7)(n+1) = 0、n は正なので n = 7
- 検算:7進で 131=49+21+1=71、45=28+5=33、53=35+3=38、71−33=38 で成立
答え:イ:7進法
英大文字と数字をコード化するのに必要なビット数
ア 5
イ 6
ウ 7
エ 8
解き方と答えを見る
- 種類数を数える:英大文字 26 + 数字 10 = 36種
- 5ビットで作れるのは 2^5 = 32 通り → 36 に足りない
- 6ビットで作れるのは 2^6 = 64 通り → 36 以上なので足りる
答え:イ:6ビット
32ビットは24ビットの何倍のパターンを表せるか
ア 8
イ 16
ウ 128
エ 256
解き方と答えを見る
- 32ビットのパターン数は 2^32、24ビットは 2^24
- 比を取る:2^32 ÷ 2^24 = 2^(32−24) = 2^8
- 2^8 = 256
答え:エ:256倍
10進の桁数 D と2進の桁数 B の関係
ア D≒2 log_10 B
イ D≒10 log_2 B
ウ D≒B log_2 10
エ D≒B log_10 2
出典:基本情報技術者試験 科目A免除 修了試験 20141221 実施分 問1
解き方と答えを見る
- 2進 B 桁で表せる大きさは約 2^B、10進 D 桁なら約 10^D なので 2^B ≒ 10^D
- 両辺の常用対数(log10)をとる:B × log10 2 ≒ D × log10 10
- log10 10 = 1 なので D ≒ B log10 2
- 確かめ:log10 2 ≒ 0.3。2^10 = 1024 ≒ 10^3 なので B=10 のとき D≒3 となり一致(ここでの D は 10^D の指数として見る値)
答え:エ:D≒B log10 2
要点(試験直前に読む)
- n進小数は「数字×n^-k」を足す。小数点以下 k 桁なら、整数として読んで n^k で割るのが速い(0.248(16) = 584/4096 = 73/512)。
- 16進:A=10、B=11、C=12、D=13、E=14、F=15。0.C(16) = 12/16 = 0.75。
- 2^k で割る式は、2進にして小数点を左へ k 桁ずらす(7÷32 = 0.00111)。
- 2進で有限小数になるのは、既約分数の分母が2のべき乗のときだけ。0.05 や 0.1 は無限小数。
- n ビットで 2^n 通り。必要ビット数は種類数以上になる最小の n、倍率は 2^(ビット数の差)。
- 何進法かは n で展開して方程式を解くか、選択肢を代入して確かめる。使われた最大の数字+1は下限にすぎない。
ひっかけ
- 16進の C を「12」や「5」と読み違えさせる選択肢(0.12、0.55)。C は1文字で12、重みは1/16。
- 16進小数の分母を 10^k(1000や125)にさせる選択肢。分母は 16^k(4096など)。
- 倍率の問題で、ビット数の差(8)や比(4/3)をそのまま答えさせる。正解は 2^8 = 256。
- 必要ビット数で 2^5=32 を「36に近いから足りる」と誤らせたり、1バイト=8ビットと決めつけさせたりする。
- 何進法かの問題で、最大の数字5から「6進」と短絡させる。実際に代入して等式を確かめる。
- log の底と真数を逆にした D≒B log2 10 を選ばせる。2進のほうが桁数が多いので、D は B より小さい(約0.3B)はず。
用語(16)
何個たまったら次の桁へ繰り上がるかを表す数で、n進数の n のこと。
⚠ 「基数」と「桁数」を混同しない。基数は数の体系、桁数は数字の長さ。
各桁に基数 n のべき乗の重みを付けて数を表す方法。
その桁の数字1つが表す大きさで、n進数では n のべき乗(小数部は負のべき乗)になる。
⚠ 小数第1位の重みは 16進なら 1/16 であり、10進感覚の 1/10 ではない。
0〜9とA〜F(10〜15)の16文字で表す数で、2進4桁がちょうど1桁に対応する。
⚠ C=12 を「12」と2文字で書かない。A=10〜F=15 を正確に覚える。
小数点以下の桁がどこかで終わる小数。
⚠ 10進で有限でも2進で有限とは限らない。既約分数の分母が2のべき乗かで判定する。
小数点以下が終わらずに続く小数で、分数で表せるものは同じ並びがくり返す循環小数になる。
⚠ 0.1 や 0.05 は10進では有限だが2進では無限小数になる。
分子と分母をこれ以上約分できない分数。
⚠ 約分前の分母(例:584/4096 の 4096)で判断すると誤る。
0か1のどちらかを表す、情報の最小単位。
⚠ バイトと混同しない。8ビット=1バイト。
8ビットをまとめた単位で、256通りを表せる。
⚠ 必要ビット数の問題で「とりあえず8ビット」と決めつけない。
0と1の並び方のことで、n ビットなら 2^n 通りある。
⚠ ビット数の比(32/24)や差(8)ではなく、2^差 が倍率になる。
最上位ビットも数の大きさとして使い、0以上の値だけを表す整数。
⚠ 符号付きでは最上位ビットが正負を表すため、同じビット列でも値が変わる。
底を10とする対数で、log10 x は「10を何乗すると x になるか」を表す。
⚠ log10 2(≒0.3)と log2 10(≒3.32)は逆数の関係。底と真数を取り違えない。
各文字に番号(ビットパターン)を割り当てる取り決め。
すべての文字を2バイト固定長で表すUnicode系の文字コードで、多言語に対応する。
⚠ シフトJIS・EUC-JPは英数字1バイト+漢字2バイトの混在、UTF-8は1〜4バイトの可変長。
JISから派生し、英数字を1バイト・漢字を2バイトで表す日本語の文字コード。
⚠ EUC-JPも同じバイト数の構成だが、こちらは主にUNIXで使われる。
英数字と記号を7ビット(1バイトに収まる)で表す文字コード。
⚠ 「すべて1バイト」という選択肢はASCII系の説明で、漢字は扱えない。
このレッスンの過去問
- n進数小数の基数変換令和5年度 基本情報技術者試験 科目A 公開問題 問1
- 10進小数→2進小数の有限・無限判定基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問1
- n進法での筆算成立条件(基数の特定)基本情報技術者試験 科目A免除 修了試験 20140622 実施分 問1
- 10進と2進の桁数の関係(対数変換)基本情報技術者試験 科目A免除 修了試験 20141221 実施分 問1
- 必要ビット数の計算(文字種数から)平成25年度 春期 基本情報技術者試験 午前 問2
- ビット数とビットパターン個数(2のn乗)平成28年度 秋期 基本情報技術者試験 午前 問4
- 0と1が同数となる8ビット最大値(上位4ビットを1)基本情報技術者試験 科目A免除 修了試験 20131215 実施分 問2
- 文字コード UCS-2(2バイト固定長)基本情報技術者試験 科目A免除 修了試験 20110724 実施分 問79