10進数
 0から9までの10種類の数字を使って、9の次が1つ桁上がりする

2進数
 0と1の2種類の数字を使って、1の次が1つ桁上がりする
 コンピュータ内部では2進数が使われているが、2進数は桁数が非常に長くなるため、人が考えるときは、2進数と簡単に変換できる、8進数や16進数がよく使われる。

8進数
 0から7までの8種類の数字を使って、7の次が1つ桁上がりする

16進数
 0から9までの数字とA,B,C,D,E,Fの英字をを使って、Fの次が1つ桁上がりする


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


基数
 基本となる数
 例えば、10進数123.45は、

1×102+2×101+3×100+4×10-1+5×10-2
 100  10   1  1/10  1/100

と、表すことができる。
このように、各桁の重み付けに基本となる数を基数という。
10進数の基数は10
2進数の基数は2
8進数の基数は8
16進数の基数は16

N進数の各桁の重みは、小数点を基準に左へN0, N1, N2…と増えていき、小数点を基準に右へN-1, N-2…と減っていく。

【N進数の重み】
 … N2 N1 N0 .  N-1 N-2 …

【10進数の重み】
 … 102 101 100 .  10-1 10-2 …

【2進数の重み】
 … 22 21 20 .  2-1 2-2 …



基礎変換
 ある数を別の進数で表し直すこと
 例えば、2進数101.101を10進数で表すと、5.625になる。

N進数から10進数への基数変換
2進数の値を10進数で表すには、各桁に2進数の重みを掛けて足す。

[2進数]     1  0  1  .  1  0  1
         ×  ×  ×     ×  ×  ×
[2進数の重み]  4  2  1  .  1/2 1/4 1/8
         ↓   ↓   ↓        ↓   ↓   ↓
[掛けて足す]   4+  2+  1+   .  0.5+ 0+ 0.125 = 5.625

一般的に、N進数の値を10進数で表すには、各桁にN進数の重みを掛けて足す。

10進数からN進数への基数変換
*重み対応表を使う方法
10進数5.625を2進数で表すと、101.101となる。
2進数の重み対応表を活用して、大きい重みから1を入れるべきかを考えていく。
まず、4<5.625なので重みは4は1、4+2=6>5.625なので、重み2は0…という要領。

[2進数]     1  0  1  .  1  0  1
         ×  ×  ×     ×  ×  ×
[2進数の重み]  4  2  1  .  1/2 1/4 1/8
         ↓   ↓   ↓        ↓   ↓   ↓
[掛けて足す]   4+  2+  1+   .  0.5+ 0+ 0.125 = 5.625

一般的に、10進数からN進数で変換する場合は、N進数の重み対応表を活用する。

*割り算と掛け算を使う方法
10進数6.375を2進数で表すと、2進数110.011になる。
この場合。10進数6.375を整数部"6"と少数部"0.375"に分けて考える。

10進数の値の整数部を2進数で表すには、2で割って余りを下から並べる。

6 ÷ 2 = 3…0 ↑
      
3 ÷ 2 = 1…1 ↑
      
1 ÷ 2 = 0…1 ↑ 余りを下から並べて"110"となる

次のような計算方法もある

2)
2) 3 …0
2) 1 …1
  0 …1  余りを下から並べて"110"となる

10進数の値の少数部を2進数で表すには、2で掛けて整数部を順に並べる。

0.375 × 2 = 0.75 ↓ 少数部のみ引き継いでいく
      
0.75 ÷ 2 = 1.5 ↓
      
0.5 ÷ 2 = 1.0 ↓ 整数部を上から並べて"011"となる

最後に、整数部と少数部を合わせると、"110.011"になる。

このように、10進数の値をN進数で表すには、整数部はNで割って余りを下から並べ、少数部はNを掛けて整数部の順に並べて求めることもできる。


2進数と8進数・16進数の関係
 2進数を8進数、16進数の変換はもっと簡単に行える。

2進数の3桁は、8進数の1桁に対応している(23=8)。
2進数の値を8進数で表すには、小数点を基準に、3桁ずつ区切って、それぞれ8進数で表す。
3桁にならない場合は、0を補う。

2進数1100.01を8進数で表すと、14.2になる。

[2進数]             1  1  0  0  .  0  1
         0を補う
[3桁ずつ区切る] 0  0  1  1  0  0  .  0  1  0
         ×  ×  ×  ×  ×  ×     ×  ×  ×
[2進数の重み]  4  2  1  4  2  1  .  4  2  1    
         ↓   ↓   ↓   ↓   ↓   ↓        ↓   ↓   ↓
[掛けて足す]   0+  0+  1+   4+  0+  0+  .  0+  2+  0
             ↓           ↓                ↓    
[8進数]        1        4      .     2   


同じイメージで16進数も変換できる。
2進数の4桁は、16進数の1桁に対応している(24=16)。
2進数の値を16進数で表すには、小数点を基準に、4桁ずつ区切って、それぞれ16進数で表す。
4桁にならない場合は、0を補う。
2進数1100.01を16進数で表すと、C.4になる。

[2進数]     1  1  0  0  .  0  1
                           0を補う
[4桁ずつ区切る] 1  1  0  0  .  0  1  0  0
         ×  ×  ×  ×     ×  ×  ×  ×
[2進数の重み]  8  4  2  1  .  8  4  2  1    
         ↓   ↓   ↓   ↓        ↓   ↓   ↓   ↓
[掛けて足す]    8+  4+  0+  0+  .  0+  4+  0+  0
            ↓            ↓    
[掛けて足す]        C      .      4   

16進数なので、12ではなくCになることに注意。


8進数から2進数に変換するときは8進数1桁を2進数3桁に、
16進数から2進数に変換するときは16進数を1桁を2進数4桁に、
2進数の重み対応表を活用して今の逆を考える。