10進数
2進数
16進数
2進数
3進数
4進数
5進数
6進数
7進数
8進数
9進数
10進数
11進数
12進数
13進数
14進数
15進数
16進数
17進数
18進数
19進数
20進数
21進数
22進数
23進数
24進数
25進数
26進数
27進数
28進数
29進数
30進数
31進数
32進数
33進数
34進数
35進数
36進数

進数の相互変換(2進数、10進数、16進数など)

2進数、8進数、10進数、16進数、というか2進数~36進数を他の基数にまとめて相互変換するツールと変換方法です。

  • 小数は非対応です。

基数の変換方法

基数変換は数字の表記を変えるだけなので値が変化することはありません。ただしこれは整数のみを扱う場合の話で、小数を扱う場合はもうなんか面倒くさいので本稿はツール・方法論とも小数非対応です。よしなに。

N進数(10進数以外)から10進数への変換

N進数の下位からN0,N1,...NnN^0, N^1, ... N^nをそれぞれ掛けて合算する。

例)2進数の1101100を10進数に変換する場合

0×20+0×21+1×22+1×23+0×24+1×25+1×26+0=1080 \times 2^0+0 \times 2^1 + 1 \times 2^2 + 1 \times 2^3 + 0 \times 2^4 + 1 \times 2^5 + 1 \times 2^6 + 0 = 108

例)16進数の6Cを10進数に変換する場合(C = 12)

12×160+6×161=10812 \times 16^0 + 6 \times 16^1 = 108

10進数からN進数(10進数以外)への変換

  1. 10進数を商がN未満になるまで割っていく。
  2. 最後の商を先頭にして余りを最後から順番に並べる。

例)10進数の108を2進数に変換する場合
108 ÷ 2 = 54 余り 0
54 ÷ 2 = 27 余り 0
27 ÷ 2 = 13 余り 1
13 ÷ 2 = 6 余り 1
6 ÷ 2 = 3 余り 0
3 ÷ 2 = 1 余り 1
→1101100

ようは↓の形式に分解するアルゴリズム。

0+0×2+1×22+1×23+0×24+1×25+1×26+00 + 0 \times 2 + 1 \times 2^2 + 1 \times 2^3 + 0 \times 2^4 + 1 \times 2^5 + 1 \times 2^6 + 0

例)10進数の108を16進数に変換する場合
108 ÷ 16 = 6 余り 12(C)
→6C

早見表

10進法 2進法 4進法 8進法 16進法
0 0 0 0 0
1 1 1 1 1
2 10 2 2 2
3 11 3 3 3
4 100 10 4 4
5 101 11 5 5
6 110 12 6 6
7 111 13 7 7
8 1000 20 10 8
9 1001 21 11 9
10 1010 22 12 A
11 1011 23 13 B
12 1100 30 14 C
13 1101 31 15 D
14 1110 32 16 E
15 1111 33 17 F
16 10000 100 20 10

英語表記

以下の単語が「N進」を表す形容詞らしい。なんとも不規則。プログラマーなのでBIN、OCT、DEC、HEXだけは覚えておこう。

基数 英語表記 基数 英語表記
2 binary (BIN) 10 decimal (DEC)
3 ternary (TER) 11 undecimal (UND)
4 quaternary (QUA) 12 duodecimal (DUO)
5 quinary (QUI) 13 tridecimal (TRI)
6 senary (SEN) 14 tetradecimal (TER)
7 septenary (SEP) 15 pentadecimal (PEN)
8 octal (OCT) 16 hexadecimal (HEX)
9 nonary (NON)

a binary number → 二進数
the binary numeral system → 二進法

になるそうだ。もしくはbase-nでも同じ意味になるらしい。

a base-two number → 二進数
the base-two numeral system → 二進法