【一覧表あり】十進数から二進数への変換方法【10進法と2進法】

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

これからコンピュータサイエンス (CS) の基礎を解説していこうと思います。
初回である今回は「10 進法」と「2 進法」について説明します!

十進法とは

10 進法は我々が日常で使っている数字の表現方法です。
人間は十進法で PC に数字入力しますが、PC の内部処理では二進法に変換されています。

10 進法で表現される数字のことを「十進数」と言います。

使う数字は 10 種類

  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

数字が 10 種類あるので大きい数字を表現しやすく、結果として桁数が少なくて済みます。
桁数が少ない方が人間にとってはいいですよね。

十進数の桁を右から数えると…

  • 1 桁目は 1 の位を表す
    • ※ 10 の 0 乗 は 1
  • 2 桁目は 10 の位を表す
    • ※ 10 の 1 乗 は 10
  • 3 桁目は 100 の位を表す
    • ※ 10 の 2 乗 は 100
  • 4 桁目は 1000 の位を表す
    • ※ 10 の 3 乗 は 1000

十進数を「乗数」で表現してみよう

十進数 2503 を「乗数」で表現してみましょう。

  • 2503 (十進数) ※ 二進数で 100111000111
    • 2 は 1000 の位
    • 5 は 100 の位
    • 0 は 10 の位
    • 3 は 1 の位
  • つまり 2503 は (2 * 1000) + (5 * 100) + (0 * 10) + (3 * 1) と表現できます
  • 乗数を使うと (2 * 10^3) + (5 * 10^2) + (0 * 10^1) + (3 * 10^0) とも表現できます
    • 乗数の 10 の部分のことは「基数(きすう)」または「(てい)」と言います
    • 乗数の ^3 とかの部分は「指数」と言います
  • 10 進法の基数は 10 で、各位は 10^n となります
  • 指数が ^3^2^1^0 とカウントダウンしていることに注目しましょう

二進法とは

2 進法は主に PC の処理で使われる数字の表現方法です。
PC の内部処理では二進法が使われますが、人間に数字を見せるときは十進法に変換しています。

2 進法で表現される数字のことを「二進数」と言います。

使う数字は 2 種類

  • 0
  • 1

数字が 2 種類しかないので見た目はシンプルですが、桁数が長くなります。
ですがパソコンの処理は早いので桁数が長くても問題ありません。

数字の「0」がスイッチ OFF で、「1」がスイッチ ON の回路のようなイメージです。

二進数の桁を右から数えると…

  • 1 桁目は 1 の位を表す
    • ※ 2 の 0 乗 は 1
  • 2 桁目は 2 の位を表す
    • ※ 2 の 1 乗 は 2
  • 3 桁目は 4 の位を表す
    • ※ 2 の 2 乗 は 4
  • 4 桁目は 8 の位を表す
    • ※ 2 の 3 乗 は 8

二進数を「乗数」で表現してみよう

二進数 1100 を「乗数」で表現してみましょう。

  • 1100 (二進数) ※ 十進数で 12
    • 1 は 8 の位
    • 1 は 4 の位
    • 0 は 2 の位
    • 0 は 1 の位
  • つまり 1100 は (1 * 8) + (1 * 4) + (0 * 2) + (0 * 1) と表現できます
  • 乗数を使うと (1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (0 * 2^0) とも表現できます
  • 2 進法の基数は 2 で、各位は 2^n となります
  • 指数が ^3^2^1^0 とカウントダウンしていることに注目しましょう

基数変換とは

十進数から二進数に変換する手順を説明します。
これは基数が 10 から 2 に変換されることを意味するので「基数変換」と呼ばれます。

十進数から二進数に変換する手順

十進数の数字をひたすら 2 で割っていき、余りを算出します。
※ どんな数字でも 2 で割ると余りは必ず「0」か「1」になります。

割り切れなくなったら、算出した余りを「逆から繋げる」と二進数になっています。

【例1】12 を二進数にする

「十進数」の 12 を「二進数」として表記してみましょう。

  • 12 を 2 で割っていく
    • 12 / 2 = 6 余り 0
    • 6 / 2 = 3 余り 0
    • 3 / 2 = 1 余り 1
    • 1 / 2 = 0 余り 1
  • 余りに注目すると、逆から「1100」と読むことができる。これが 二進数となる
【例2】1100 を十進数にする

二進数「1100」を乗数で表現して、計算すると十進数に戻せます。

// 答えは 12
(1 * 2^3) +
(1 * 2^2) +
(0 * 2^1) +
(0 * 2^0)

【問題1】2503 を二進数にする

「十進数」の 2503 を「二進数」として表記してみましょう。

  • 2503 を 2 で割っていく
    • 2502 / 2 = 1251 余り 1
    • 1251 / 2 = 625 余り 1
    • 625 / 2 = 312 余り 1
    • 312 / 2 = 156 余り 0
    • 156 / 2 = 78 余り 0
    • 78 / 2 = 39 余り 0
    • 39 / 2 = 19 余り 1
    • 19 / 2 = 9 余り 1
    • 9 / 2 = 4 余り 1
    • 4 / 2 = 2 余り 0
    • 2 / 2 = 1 余り 0
    • 1 / 2 = 0 余り 1
  • 余りに注目すると、逆から「100111000111」と読むことができる。これが二進数となる
【問題2】100111000111 を十進数にする

二進数「100111000111」を乗数で表現して、計算すると十進数に戻せます。

// 答えは 2503
(1 * 2^11) +
(0 * 2^10) +
(0 * 2^9) +
(1 * 2^8) +
(1 * 2^7) +
(1 * 2^6) +
(0 * 2^5) +
(0 * 2^4) +
(0 * 2^3) +
(1 * 2^2) +
(1 * 2^1) +
(1 * 2^0)

位取り記数法とは

10 進法、2 進法などを総称して「位取り記数法 (くらいどりきすうほう)」と言います。

各位の大きさを 10^n2^n と表せるのが特徴です。

例えば 1000000000 と 1000000000 では、どちらが大きい数字か一目でわかりにくいですが、
10^1010^11 という指数表現では、後者が大きい数字であることが明らかで便利です。

  • an, an-1, an-2, … , a2, a1, a0
    • ある数字の各位を上から並べた場合、このように表現できます
  • an * 10^n, an-1 * 10^n-1, an-2 * 10^n-2, … , a2 * 10^2, a1 * 10^1, a0 * 10^0
    • それに 10 進法の位取り記数法を使った場合、このように変換できます
    • 各位を公式化すると ak * 10^k と表現できます (添字 k と指数 k が一致する)

ちょっと分かりにくいので、例を掲載しておきます。

  • 2503 の各位を 10 進法で表現するためには…
    • n = 3
    • a3 = 2
    • a2 = 5
    • a1 = 0
    • a0 = 3
  • (2 * 10^3) + (5 * 10^2) + (0 * 10^1) + (3 * 10^0)

二進法・十進法以外の基数法

8 進法

使う数字は 8 種類
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
基数は 8

数字は 1 桁目から 8^0 → 8^1 → 8^2 → 8^3 …と表します。

16 進法

使う数字は 16 種類
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • A または a
  • B または b
  • C または c
  • D または d
  • E または e
  • F または f
基数は 16

数字は 1 桁目から 16^0 → 16^1 → 16^2 → 16^3 …と表します。

N 進法

使う数字は N 種類
  • 0
  • 1
  • 2
  • 3
  • (省略)
  • N-1
基数は N

数字は 1 桁目から N^0 → N^1 → N^2 → N^3 …と表します。

数字の表現方法
  • たとえば a3a2a1a0 は「4桁」の数字として表現できます
    • a0, a1, a2, a3 はそれぞれ「0 〜 N-1」のどれかを表します
  • (a3 * N^3) + (a2 * N^2) + (a1 * N^1) + (a0 * N^0) で計算すれば、十進数の値になります

2 で除算するのは「 1 回、右ビットシフトする」のと同じ

2 で除算するのは「二進数を 1 回、右ビットシフトする」のと同じです。

例えば 14 / 2 の答えは 7 ですが…

14 の二進数である 1110 を 1110 >> 1 すると 111 を得ることができます。
二進数 111 とは十進数 7 のことなので、除算の結果と一致します。

ビットが 1 つ増えたときの十進数

ある二進数の末尾にビットが 1 つ増える場合、
(十進数 * 2) + 末尾に増えるビット で「ビットが 1 つ増えたときの十進数」を取得できます。

  • 二進数「0」
    • (1 * 0) で十進数「0」を求めることが可能
  • 二進数「1」
    • (1 * 1) で十進数「1」を求めることが可能
  • 二進数「10」※ 二進数「1」の末尾にビット 0 を追加
    • (2 * 1) + (1 * 0) で十進数「2」を求めることが可能
    • (1 * 2) + 0 でも十進数「2」を求めることが可能
  •  二進数「11」※ 二進数「1」の末尾にビット 1 を追加
    • (2 * 1) + (1 * 1) で十進数「3」を求めることが可能
    • (1 * 2) + 1 でも十進数「3」を求めることが可能
  • 二進数「100」※ 二進数「10」の末尾にビット 0 を追加
    • (4 * 1) + (2 * 0) + (1 * 0) で十進数「4」を求めることが可能
    • (2 * 2) + 0 でも十進数「4」を求めることが可能
  •  二進数「101」※ 二進数「10」の末尾にビット 1 を追加
    • (4 * 1) + (2 * 0) + (1 * 1) で十進数「5」を求めることが可能
    • (2 * 2) + 1 でも十進数「5」を求めることが可能
  • 二進数「110」※ 二進数「11」の末尾にビット 0 を追加
    • (4 * 1) + (2 * 1) + (1 * 0) で十進数「6」を求めることが可能
    • (3 * 2) + 0 でも十進数「6」を求めることが可能
  • 二進数「111」※ 二進数「11」の末尾にビット 1 を追加
    • (4 * 1) + (2 * 1) + (1 * 1) で十進数「7」を求めることが可能
    • (3 * 2) + 1 でも十進数「7」を求めることが可能

二進数と十進数の比較表

十進数の 100 まで対応する二進数を用意しました。

偶数を二進数で表現すると「最後のビットは 0 になる」、
奇数を二進数で表現すると「最後のビットは 1 になる」ことは知っておくといいと思います。

また二進数に「1」が 1 個しか含まれていないとき、十進数では 2 の累乗になっています。

二進数十進数備考
00唯一、二進数の先頭ビットが 0
112^0
1022^1
113
10042^2
1015
1106
1117
100082^3
10019
101010
101111
110012
110113
111014
111115
10000162^4
1000117
1001018
1001119
1010020
1010121
1011022
1011123
1100024
1100125
1101026
1101127
1110028
1110129
1111030
1111131
100000322^5
10000133
10001034
10001135
10010036
10010137
10011038
10011139
10100040
10100141
10101042
10101143
10110044
10110145
10111046
10111147
11000048
11000149
11001050
11001151
11010052
11010153
11011054
11011155
11100056
11100157
11101058
11101159
11110060
11110161
11111062
11111163
1000000642^6
100000165
100001066
100001167
100010068
100010169
100011070
100011171
100100072
100100173
100101074
100101175
100110076
100110177
100111078
100111179
101000080
101000181
101001082
101001183
101010084
101010185
101011086
101011187
101100088
101100189
101101090
101101191
101110092
101110193
101111094
101111195
110000096
110000197
110001098
110001199
1100100100

おすすめの本

今回の十進数・二進数だったり、必要な数学知識を学べる技術書を紹介しておきます。
やさしい日本語で書かれているのでオススメです。

おすすめ

CS シリーズ

次回

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「CS」の最新記事

最新記事

コメント

コメントを残す

*