資格道場 › レッスン一覧 › 基礎理論
基礎理論・1/13・14分

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つのどちらかを使います。

  1. 桁ごとに重みを掛けて足す:0.C(16) = 12 × 16^-1 = 12/16 = 0.75
  2. まとめて割る(近道):小数点以下が 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が速いです。

0.248(16) を10進に(近道2)小数点を無視して 248(16) を整数として読む248×16^2×16×1(256)(16)(1)512648512 + 64 + 8 = 584小数点以下が3桁 → 16^3 で割る584 ÷ 16^3 (4096) = 73/512
0.248(16) は小数点を無視して 248(16) を整数として読むと584になり、小数点以下が3桁なので 16^3 (4096) で割ると 73/512 になる。

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になったら終わりです。

7 = 111(2)111123450001111/21/41/81/161/3232 = 2^5 なので小数点を5桁左へ7÷32 = 0.00111(2)
7÷32 は 7=111(2) の小数点を5桁左へずらすだけで 0.00111(2) になり、並んだ1の重みは 1/8・1/16・1/32 になる。

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。
36種を区別するには何ビット?365ビット2^5 = 32通り36に届かない6ビット2^6 = 64通り03264必要な種類 36(英大文字+数字)32では足りない → 6ビット
36種を区別するには、2^5=32 通りの棒は36の線に届かず、2^6=64 通りの棒で線を越えるので6ビット必要。

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で主流
例題 1

16進小数 0.C を10進にする

16 進小数 0.C を 10 進小数に変換したものはどれか。

ア 0.12
イ 0.55
ウ 0.75
エ 0.84

出典:令和5年度 基本情報技術者試験 科目A 公開問題 問1

解き方と答えを見る
  1. C は16進で 12 を表す
  2. 小数第1位の重みは 16^-1 = 1/16
  3. 0.C(16) = 12 × 1/16 = 12/16
  4. 12/16 = 3/4 = 0.75

答え:ウ:0.75

例題 2

16進小数 0.248 を10進の分数にする

16 進数の小数 0.248 を 10 進数の分数で表したものはどれか。

ア 31/32
イ 31/125
ウ 31/512
エ 73/512

出典:平成30年度 秋期 基本情報技術者試験 午前 問1

解き方と答えを見る
  1. 小数点以下が3桁なので、248(16) を 16^3 で割る
  2. 248(16) = 2×256 + 4×16 + 8 = 512 + 64 + 8 = 584
  3. 16^3 = 4096 なので 584/4096
  4. 分子・分母を8で割って約分:584÷8 = 73、4096÷8 = 512
  5. 73 は奇数なのでこれ以上約分できない

答え:エ:73/512

例題 3

7÷32 を2進数で表す

10 進数の演算式 7÷32 の結果を 2 進数で表したものはどれか。

ア 0.001011
イ 0.001101
ウ 0.00111
エ 0.0111

出典:平成31年度 春期 基本情報技術者試験 午前 問1

解き方と答えを見る
  1. 32 = 2^5 なので、7÷32 = 7 × 2^-5
  2. 7 を2進にすると 111
  3. 2^-5 を掛ける=小数点を5桁左へずらす:111 → 0.00111
  4. 検算:0.00111 = 1/8 + 1/16 + 1/32 = 4/32 + 2/32 + 1/32 = 7/32

答え:ウ:0.00111

例題 4

2進で無限小数になるものを選ぶ

次の 10 進小数のうち,2 進数で表すと無限小数になるものはどれか。

ア 0.05
イ 0.125
ウ 0.375
エ 0.5

出典:基本情報技術者試験 科目A免除 修了試験 20251214 実施分 問1

解き方と答えを見る
  1. 各選択肢を既約分数にする
  2. 0.05 = 5/100 = 1/20、0.125 = 1/8、0.375 = 3/8、0.5 = 1/2
  3. 分母を素因数に分ける:20 = 2×2×5、8 = 2×2×2、2 = 2
  4. 分母に5を含むのは 1/20 だけなので、0.05 だけが無限小数

答え:ア:0.05

例題 5

131 − 45 = 53 が成り立つ基数を求める

次の計算は何進法で成立するか。 131− 45 = 53

ア 6
イ 7
ウ 8
エ 9

出典:基本情報技術者試験 科目A免除 修了試験 20140622 実施分 問1

解き方と答えを見る
  1. 基数を n と置いて展開:131 = n²+3n+1、45 = 4n+5、53 = 5n+3
  2. 式を立てる:(n²+3n+1) − (4n+5) = 5n+3
  3. 左辺を整理:n² − n − 4 = 5n + 3
  4. 移項:n² − 6n − 7 = 0
  5. 因数分解:(n−7)(n+1) = 0、n は正なので n = 7
  6. 検算:7進で 131=49+21+1=71、45=28+5=33、53=35+3=38、71−33=38 で成立

答え:イ:7進法

例題 6

英大文字と数字をコード化するのに必要なビット数

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

ア 5
イ 6
ウ 7
エ 8

出典:平成24年度 秋期 基本情報技術者試験 午前 問4

解き方と答えを見る
  1. 種類数を数える:英大文字 26 + 数字 10 = 36種
  2. 5ビットで作れるのは 2^5 = 32 通り → 36 に足りない
  3. 6ビットで作れるのは 2^6 = 64 通り → 36 以上なので足りる

答え:イ:6ビット

例題 7

32ビットは24ビットの何倍のパターンを表せるか

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

ア 8
イ 16
ウ 128
エ 256

出典:平成28年度 秋期 基本情報技術者試験 午前 問4

解き方と答えを見る
  1. 32ビットのパターン数は 2^32、24ビットは 2^24
  2. 比を取る:2^32 ÷ 2^24 = 2^(32−24) = 2^8
  3. 2^8 = 256

答え:エ:256倍

例題 8

10進の桁数 D と2進の桁数 B の関係

正の整数の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

解き方と答えを見る
  1. 2進 B 桁で表せる大きさは約 2^B、10進 D 桁なら約 10^D なので 2^B ≒ 10^D
  2. 両辺の常用対数(log10)をとる:B × log10 2 ≒ D × log10 10
  3. log10 10 = 1 なので D ≒ B log10 2
  4. 確かめ: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進数 エヌしんすう
各桁に基数 n のべき乗の重みを付けて数を表す方法。
桁の重み けたのおもみ
その桁の数字1つが表す大きさで、n進数では n のべき乗(小数部は負のべき乗)になる。
⚠ 小数第1位の重みは 16進なら 1/16 であり、10進感覚の 1/10 ではない。
16進数 じゅうろくしんすう
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)で判断すると誤る。
ビット bit(binary digit)
0か1のどちらかを表す、情報の最小単位。
⚠ バイトと混同しない。8ビット=1バイト。
バイト byte
8ビットをまとめた単位で、256通りを表せる。
⚠ 必要ビット数の問題で「とりあえず8ビット」と決めつけない。
ビットパターン ビットパターン
0と1の並び方のことで、n ビットなら 2^n 通りある。
⚠ ビット数の比(32/24)や差(8)ではなく、2^差 が倍率になる。
符号なし2進整数 ふごうなしにしんせいすう
最上位ビットも数の大きさとして使い、0以上の値だけを表す整数。
⚠ 符号付きでは最上位ビットが正負を表すため、同じビット列でも値が変わる。
常用対数 じょうようたいすう
底を10とする対数で、log10 x は「10を何乗すると x になるか」を表す。
⚠ log10 2(≒0.3)と log2 10(≒3.32)は逆数の関係。底と真数を取り違えない。
文字コード もじコード
各文字に番号(ビットパターン)を割り当てる取り決め。
UCS-2 Universal Coded Character Set 2-octet form
すべての文字を2バイト固定長で表すUnicode系の文字コードで、多言語に対応する。
⚠ シフトJIS・EUC-JPは英数字1バイト+漢字2バイトの混在、UTF-8は1〜4バイトの可変長。
シフトJIS シフトジス
JISから派生し、英数字を1バイト・漢字を2バイトで表す日本語の文字コード。
⚠ EUC-JPも同じバイト数の構成だが、こちらは主にUNIXで使われる。
ASCII American Standard Code for Information Interchange
英数字と記号を7ビット(1バイトに収まる)で表す文字コード。
⚠ 「すべて1バイト」という選択肢はASCII系の説明で、漢字は扱えない。

このレッスンの過去問

このレッスンで稽古する