メインコンテンツへスキップ
見出し画像

【基本情報】2進数・16進数・基数変換を完全攻略|苦手な人向け超入門

    「2進数を見ただけで苦手意識が出る…」

    「101101って結局いくつ?」

    「16進数になるとAとかFまで出てきて意味が分からない😇」

    基本情報技術者試験の勉強を始めて、最初につまずきやすいテーマの一つが、

    2進数・16進数・基数変換

    です。

    でも実は、仕組みさえ理解してしまえば難しくありません。

    この記事では、

    10進数 → 2進数

    2進数 → 10進数

    2進数 ↔ 16進数

    16進数 → 10進数


    まで、初めて勉強する人向けに順番に解説します。

    基本情報ではこの先、

    論理演算・IPアドレス・ビット演算・データ量

    などにもつながる重要テーマです。

    ここで基礎を固めておきましょう🔥

    ⸻

    1.そもそも「進数」って何?

    普段私たちが使っている数字は、

    10進数

    です。

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9

    10種類の数字を使います。

    9の次は、

    9
    ↓
    10

    となりますよね。

    これが、

    10進数

    です。

    一方、コンピュータでは、

    2進数

    が非常に重要です。

    ⸻

    2.2進数とは?

    2進数では、

    0と1

    だけを使います。

    0
    1

    1の次は、

    10

    になります。

    つまり、

    画像

    となります。

    最初は不思議に見えますが、

    使える数字が0と1しかない

    と考えればOKです。

    ⸻

    3.なぜコンピュータは2進数を使う?

    コンピュータ内部では、

    電気的なON/OFF

    のような2つの状態を扱いやすいため、2進数が基本になります。

    イメージとしては、

    0 → OFF
    1 → ON

    です。

    つまり、

    0と1の組合せでデータを表現する

    のがコンピュータの基本です。

    ⸻

    4.「桁の重み」を理解しよう

    基数変換で一番重要なのが、

    桁の重み

    です。

    普段使っている10進数、

    123

    を考えてみます。

    これは、

    1 × 100
    +
    2 × 10
    +
    3 × 1

    ですよね。

    つまり、

    1 × 10²
    +
    2 × 10¹
    +
    3 × 10⁰

    です。

    10進数では、

    右から10⁰、10¹、10²、10³…

    という重みになっています。

    ⸻

    5.2進数も考え方は同じ

    2進数では、

    右から2⁰、2¹、2²、2³…

    です。

    例えば、

    1011

    なら、

    画像

    なので、

    1×8
    +
    0×4
    +
    1×2
    +
    1×1

    =

    8 + 0 + 2 + 1
    = 11

    つまり、

    (1011)₂ = (11)₁₀

    です。

    ⸻

    6.まず覚えたい2の累乗

    基本情報では、これを覚えておくとかなり楽です。

    画像

    最低でも、

    1・2・4・8・16・32・64・128・256

    くらいまではすぐ出せるようにしておくと便利です。

    ネットワークやデータ量の計算でも使います。

    ⸻

    7.2進数 → 10進数の変換

    例として、

    (1101)₂

    を10進数にしてみます。

      1      1     0    1
      ↓    ↓    ↓    ↓
      8     4     2    1

    1になっている場所だけ足します。

    8 + 4 + 1
    = 13

    したがって、

    (1101)₂ = (13)₁₀

    です。

    ⸻

    8.もう1問やってみよう

    (10110)₂

    を10進数へ変換します。

    重みを書くと、

    16  8   4  2   1
    ↓  ↓  ↓  ↓  ↓
    1    0  1    1   0

    1の場所だけ足すので、

    16 + 4 + 2
    = 22

    答えは、

    (22)₁₀

    です。

    ⸻

    9.2進数→10進数のコツ

    やることはシンプルです。

    ① 右から
      1・2・4・8・16…
      と書く
    ② 1になっている場所を見る
    ③ その数字を足す

    これだけです。

    例えば、

    101101

    なら、

    32 16 8 4 2 1
     1   0  1  1 0 1

    なので、

    32 + 8 + 4 + 1
    = 45

    です。

    ⸻

    10.今度は10進数 → 2進数

    ここで逆方向です。

    例えば、

    13

    を2進数にしてみましょう。

    方法はいくつかありますが、初心者には、

    2の累乗を組み合わせる方法

    が分かりやすいです。

    13を、

    8 + 4 + 1

    と分解します。

    つまり、

    8  4  2   1
    1   1   0  1

    なので、

    (13)₁₀ = (1101)₂

    です。

    ⸻

    11.「2で割る方法」も覚えよう

    10進数を2進数へ変換する定番方法が、

    2で繰り返し割る

    方法です。

    例えば13なら、

    13 ÷ 2 = 6 余り1
    6 ÷ 2 = 3 余り0
    3 ÷ 2 = 1 余り1
    1 ÷ 2 = 0 余り1

    そして、

    余りを下から読む

    と、

    1101

    になります。

    したがって、

    13₁₀ = 1101₂

    です。

    ⸻

    12.なぜ余りを下から読むの?

    ここは最初は、

    「10進数→2進数は2で割って、余りを下から読む」

    と覚えてOKです。

    慣れてきたら、

    割り算によって、

    2⁰の桁 → 2¹の桁 → 2²の桁…

    を順番に求めていると理解すると、仕組みまで分かります。

    ⸻

    13.10進数→2進数をもう1問

    26

    を2進数にします。

    26 ÷ 2 = 13 余り0
    13 ÷ 2 =  6 余り1
    6 ÷ 2 =  3 余り0
    3 ÷ 2 =  1 余り1
    1 ÷ 2 =  0 余り1

    余りを下から読むと、

    11010

    したがって、

    26₁₀ = 11010₂

    です。

    確認すると、

    16 + 8 + 2
    = 26

    なので合っています。

    ⸻

    14.16進数とは?

    次は、

    16進数

    です。

    16進数では、1桁で、

    0〜15

    を表現します。

    しかし数字は0〜9までしかありません。

    そこで、

    10 → A
    11 → B
    12 → C
    13 → D
    14 → E
    15 → F

    を使います。

    つまり、

    画像

    ここは必ず覚えましょう。

    特に、

    A=10、B=11、C=12、D=13、E=14、F=15

    は即答できるようにしておきたいところです。

    ⸻

    15.16進数の桁の重み

    10進数は、

    10⁰
    10¹
    10²

    2進数は、

    2⁰
    2¹
    2²

    でした。

    同じように16進数では、

    16⁰
    16¹
    16²

    となります。

    つまり右から、

    1
    16
    256
    4096
    …

    です。

    ⸻

    16.16進数 → 10進数

    例えば、

    (2A)₁₆

    を10進数にしてみます。

    Aは10なので、

    2 × 16
    +
    10 × 1

    =

    32 + 10
    = 42

    したがって、

    (2A)₁₆ = (42)₁₀

    です。

    ⸻

    17.もう1問やってみよう

    (3F)₁₆

    を10進数へ変換します。

    Fは15なので、

    3 × 16
    +
    15

    =

    48 + 15
    = 63

    答えは、

    (63)₁₀

    です。

    ⸻

    18.16進数 → 10進数の3桁問題

    例えば、

    (1A3)₁₆

    なら、

    1 × 16²
    +
    10 × 16¹
    +
    3 × 16⁰

    です。

    計算すると、

    256
    +
    160
    +
    3
    =
    419

    したがって、

    (1A3)₁₆ = (419)₁₀

    です。

    ⸻

    19.2進数と16進数には超便利な関係がある

    ここが重要です。

    16 = 2⁴

    ですよね。

    そのため、

    2進数4桁=16進数1桁

    として変換できます。

    これは絶対に覚えておきましょう。

    ⸻

    20.2進数4桁と16進数の対応表

    画像

    最初から全部暗記する必要はありません。

    ただ、

    1010=A

    から、

    1111=F

    くらいは慣れてくると即答できるようになります。

    ⸻

    21.2進数 → 16進数

    例えば、

    10111100₂

    を16進数へ変換してみます。

    右から4桁ずつ区切ります。

    1011 1100

    それぞれ、

    1011 → B
    1100 → C

    なので、

    10111100₂ = BC₁₆

    です。

    これだけです。

    ⸻

    22.4桁で区切れない場合は?

    例えば、

    101101₂

    なら、

    右から4桁ずつ区切ると、

    10 1101

    左側が2桁しかありません。

    そこで先頭に0を補います。

    0010 1101

    すると、

    0010 → 2
    1101 → D

    なので、

    101101₂ = 2D₁₆

    です。

    先頭に0を追加しても数値自体は変わりません。

    ⸻

    23.16進数 → 2進数

    今度は逆です。

    例えば、

    3A₁₆

    を2進数へ変換します。

    1桁ずつ4ビットへ変換します。

    3 → 0011
    A → 1010

    つなげると、

    00111010

    したがって、

    3A₁₆ = 00111010₂

    です。

    先頭の0を省略して、

    111010₂

    としても数値は同じです。

    ⸻

    24.Fは絶対覚えておきたい

    16進数の、

    F

    は、

    F₁₆
    =
    15₁₀
    =
    1111₂

    です。

    つまり、

    F=1111

    です。

    そのため、

    FF₁₆

    なら、

    1111 1111₂

    です。

    これは、

    255₁₀

    になります。

    ⸻

    25.なぜFF=255?

    確認してみましょう。

    16進数なら、

    F × 16
    +
    F

    です。

    F=15なので、

    15 × 16 + 15
    = 240 + 15
    = 255

    となります。

    つまり、

    FF₁₆ = 255₁₀

    です。

    ネットワークを勉強するときにも、この255という数字をよく見ることになります。

    ⸻

    26.10進数 → 16進数

    10進数から16進数へ変換するときは、

    16で繰り返し割る

    方法があります。

    例えば、

    45

    なら、

    45 ÷ 16 = 2 余り13

    13は16進数で、

    D

    です。

    したがって、

    45₁₀ = 2D₁₆

    です。

    ⸻

    27.10進数→16進数をもう1問

    250

    を16進数にします。

    250 ÷ 16
    = 15 余り10

    15は、

    F

    10は、

    A

    なので、

    250₁₀ = FA₁₆

    です。

    確認すると、

    F × 16 + A
    =
    15 × 16 + 10
    =
    250

    となります。

    ⸻

    28.直接変換が難しかったら2進数を経由してもOK

    例えば10進数から16進数への変換が苦手なら、

    10進数
    ↓
    2進数
    ↓
    16進数

    と変換してもOKです。

    特に、

    2進数 ↔ 16進数

    は4桁単位で変換できるため、慣れるとかなり簡単です。

    ⸻

    29.変換方法を一発整理

    ここまでをまとめます。

    2進数 → 10進数

    1になっている桁の重みを足す

    1011₂
    ↓
    8 + 2 + 1
    ↓
    11₁₀

    10進数 → 2進数

    2で割って余りを下から読む

    16進数 → 10進数

    各桁 × 16の累乗

    10進数 → 16進数

    16で割って余りを変換

    2進数 ↔ 16進数

    4ビット単位で変換

    これを押さえればかなり解けます。

    ⸻

    30.基本情報でよくある問題①

    次の2進数を10進数へ変換してください。

    10101₂

    重みを書くと、

    16 8 4 2 1
    1  0  1 0 1

    なので、

    16 + 4 + 1
    = 21

    答えは、

    21₁₀

    です。

    ⸻

    31.基本情報でよくある問題②

    次の10進数を2進数へ変換してください。

    19₁₀

    19は、

    16 + 2 + 1

    なので、

    10011

    答えは、

    10011₂

    です。

    ⸻

    32.基本情報でよくある問題③

    次の2進数を16進数へ変換してください。

    11010110₂

    4桁ずつ区切ります。

    1101 0110

    それぞれ、

    1101 → D
    0110 → 6

    なので、

    D6₁₆

    です。

    ⸻

    33.基本情報でよくある問題④

    次の16進数を2進数へ変換してください。

    7B₁₆

    7 → 0111
    B → 1011

    なので、

    01111011₂

    です。

    ⸻

    34.基本情報でよくある問題⑤

    次の16進数を10進数へ変換してください。

    4C₁₆

    C=12なので、

    4 × 16 + 12
    =
    64 + 12
    =
    76

    答えは、

    76₁₀

    です。

    ⸻

    35.よくある間違い① 右から数える

    2進数の桁の重みは、

    右端から

    2⁰
    2¹
    2²
    2³
    …

    です。

    つまり、

    1
    2
    4
    8
    16
    32
    …

    となります。

    左から1・2・4…と書かないように注意しましょう。

    ⸻

    36.よくある間違い② 16進数のA〜F

    ここは頻出です。

    A = 10
    B = 11
    C = 12
    D = 13
    E = 14
    F = 15

    F=16ではありません。

    16進数では、

    Fの次
    ↓
    10

    になります。

    これは10進数で、

    15の次が16

    なのと同じ考え方です。

    ⸻

    37.よくある間違い③ 2進数を左から4桁区切る

    2進数→16進数では、

    右から4桁ずつ

    区切ります。

    例えば、

    1011011

    なら、

    101 1011

    です。

    そして、

    0101 1011

    と0を補います。

    0101 → 5
    1011 → B

    なので、

    5B₁₆

    です。

    ⸻

    38.小数の2進数も知っておこう

    整数部分では、

    2⁰
    2¹
    2²
    …

    でした。

    小数点より右側は、

    2⁻¹
    2⁻²
    2⁻³
    …

    となります。

    つまり、

    画像

    です。

    ⸻

    39.2進小数 → 10進小数

    例えば、

    0.101₂

    なら、

    1 × 1/2
    +
    0 × 1/4
    +
    1 × 1/8

    なので、

    0.5 + 0 + 0.125
    = 0.625

    つまり、

    0.101₂ = 0.625₁₀

    です。

    ⸻

    40.10進小数 → 2進小数

    整数部分では、

    2で割る

    でした。

    小数部分では逆に、

    2を掛ける

    方法を使います。

    例えば、

    0.625

    なら、

    0.625 × 2 = 1.25  → 1
    0.25   × 2 = 0.5    → 0
    0.5     × 2 = 1.0     → 1

    整数部分を上から読むと、

    101

    なので、

    0.625₁₀ = 0.101₂

    です。

    ⸻

    41.整数と小数で覚え方を分ける

    ここはセットで覚えると便利です。

    10進整数 → 2進数

    2で割る

    10進小数 → 2進数

    2を掛ける

    つまり、

    整数は割る、小数は掛ける

    です。

    ⸻

    42.ビットとバイトにもつながる

    2進数を理解すると、

    bit(ビット)

    も分かりやすくなります。

    1bitでは、

    0
    1

    の、

    2通り

    を表現できます。

    2bitなら、

    00
    01
    10
    11

    の、

    4通り

    です。

    3bitなら、

    8通り

    です。

    つまり、

    nビットで表せる組合せ=2ⁿ通り

    となります。

    ⸻

    43.8bitなら何通り?

    公式は、

    2ⁿ

    なので、

    2⁸
    = 256

    です。

    つまり8bitでは、

    256通り

    を表現できます。

    符号なし整数なら、

    0〜255

    です。

    ここでも、

    255

    が登場します。

    ⸻

    44.最大値は「2ⁿ−1」

    nビットの符号なし整数で表せる最大値は、

    2ⁿ−1

    です。

    例えば8bitなら、

    2⁸−1
    =
    256−1
    =
    255

    です。

    4bitなら、

    2⁴−1
    =
    15

    つまり、

    1111₂
    =
    F₁₆
    =
    15₁₀

    となります。

    全部つながっています。

    ⸻

    45.ここまでの関係をまとめると

    例えば、

    1111₂

    は、

    15₁₀

    であり、

    F₁₆

    です。

    つまり、

    1111₂ = 15₁₀ = F₁₆

    です。

    そして8bit全部が1なら、

    11111111₂
    =
    255₁₀
    =
    FF₁₆

    となります。

    ここまで理解できれば、2進数と16進数の関係はかなり見えてきます。

    ⸻

    46.試験で見たらこう考える

    「2進数→10進数」

    → 桁の重みを足す

    「10進数→2進数」

    → 2で割る

    「2進数→16進数」

    → 右から4桁

    「16進数→2進数」

    → 1桁を4bitへ

    「16進数→10進数」

    → 16の累乗

    「nビットで何通り?」

    → 2ⁿ

    「符号なしnビットの最大値?」

    → 2ⁿ−1

    このキーワード反応ができるようになると、問題をかなり速く解けます。

    ⸻

    47.試験直前チェックリスト

    次の問題を即答できるか確認してみましょう👇

    ① 1010₂を10進数にすると?
    → 10

    ② 15₁₀を2進数にすると?
    → 1111

    ③ 1111₂を16進数にすると?
    → F

    ④ A₁₆は10進数で?
    → 10

    ⑤ F₁₆は?
    → 15

    ⑥ FF₁₆は10進数で?
    → 255

    ⑦ 2進数何桁で16進数1桁?
    → 4bit

    ⑧ 8bitで何通り?
    → 256通り

    ⑨ 符号なし8bitの最大値は?
    → 255

    ⑩ 0.1₂は10進数で?
    → 0.5

    全部答えられれば、基本はかなり固まっています🔥

    ⸻

    48.最後にこれだけ覚える

    時間がない人は、この5つだけでも押さえてください。

    ① 2進数の重み

    1・2・4・8・16・32・64・128…

    ② 16進数

    A=10
    B=11
    C=12
    D=13
    E=14
    F=15

    ③ 2進数 → 16進数ら

    4bit=16進数1桁

    ④ nビットの組合せ

    2ⁿ通り

    ⑤ 符号なしnビットの最大値

    2ⁿ−1

    特に、

    1111₂ = F₁₆ = 15₁₀
    11111111₂ = FF₁₆ = 255₁₀

    は覚えておくと便利です。

    ⸻

    まとめ

    2進数・16進数は、最初は記号のように見えて難しく感じます。

    でも、基本となる考え方は、

    「各桁に重みがある」

    というだけです。

    10進数なら、

    1・10・100・1000…

    2進数なら、

    1・2・4・8・16…

    16進数なら、

    1・16・256・4096…

    です。

    そして変換問題では、

    2進数→10進数=重みを足す

    10進数→2進数=2で割る

    2進数↔16進数=4bit単位


    と整理しておけばOK。

    2進数は、この先勉強する、

    論理演算

    ビット演算

    IPアドレス・サブネット

    データ量


    などの土台になります。

    「数字が苦手だから後回し」にせず、最初にここを理解しておくと、後の勉強がかなり楽になります🔥

    ⸻

    📚 基本情報技術者試験を勉強している方へ

    このnoteでは、

    「基本情報の難しいテーマを、初学者でも分かるように図解する」

    をテーマに、科目A・科目Bの頻出分野をまとめています。

    今回の2進数・16進数・基数変換は、基本情報を勉強するうえで最初に理解しておきたい重要テーマです。

    次は、

    論理演算(AND・OR・NOT・XOR)

    を学ぶと、今回の2進数の知識がそのままつながります。

    今後も、

    アルゴリズム・CPU・メモリ・ネットワーク・データベース・セキュリティ・科目B対策

    などを順番に解説していきます。

    これから基本情報を受ける方は、スキ・フォローしてもらえると嬉しいです🙌

    試験前にもう一度解き直せるよう、この記事もぜひ保存しておいてください📌

    あなたへのおすすめ