進数変換リンク

他のn進数からn進数への変換は以下をご参照ください。

VBAで2進数から8進数へ変換する
VBAで2進数から10進数へ変換する
VBAで2進数から16進数へ変換する
VBAで8進数から2進数へ変換する
VBAで8進数から10進数へ変換する
VBAで8進数から16進数に変換する
VBAで10進数から2進数へ変換する
VBAで10進数から8進数へ変換する
VBAで10進数から16進数へ変換する

10進数から2進数へ変換する考え方

10進数から2進数に変換するには、10進数値を2で繰り返し割り、その際の余りの値を連結していき、最終的に割り切れなくなったときの割算結果である商が1の場合は一番左にその値を連結して、2進数に変換します。

なお、VBAでは2進数を表現するには文字列を扱います。

例:10進数文字列”37″を2進数に変換する

37を繰り返し2で割った場合の余りと商は以下になります。

回数 1回目 2回目 3回目 4回目 5回目 6回目
2で割った商 37 18 9 4 2 1
2で割った余り 1 0 1 0 0 なし

これを商、5回目の余り、4回目の余り、3回目の余り、2回目の余り、1回目の余り、の順に連結して、100101となります。

上の表の右側から左に向かって連結していくことになります。

10進数から2進数に変換する関数

第一引数に変換元となる10進数文字列を指定し、第二引数が変換後の2進数文字列が返却されます。

例えば第一引数に”37″とセットした場合は第二引数に”100101″がセットされて関数が終了します。

2進数にする際に注意する点としては、2で割った余りを連結する場合に文字列の右ではなく左の上位桁として連結する点です。

文字列の連結は一般的には元の文字列の右につなげることが多いのですが、2進数は左になります。

使い方

10進数文字列をいくつか持つ配列を作って、ループでDecToBin関数を呼び出し、変換結果をイミディエイトウィンドウに出力するサンプルです。

実行結果
1 1
2 10
3 11
4 100
5 101
6 110
7 111
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
16 10000
17 10001
20 10100
21 10101
22 10110
23 10111
24 11000
25 11001
26 11010
27 11011
30 11110
31 11111
32 100000
33 100001
34 100010
35 100011
36 100100
37 100101
40 101000
41 101001
42 101010
43 101011
44 101100
45 101101