2進数、10進数、16進数の変換について

コンピューターアーキテクチャ

概要

2進数、10進数、16進数をそれぞれ変換するための計算方法についてまとめる。

重みとは

計算する前の前提として、重みについて理解する。

重みとはそれぞれの桁を表す数のこと。

ex. 10進数1234

10^04 = 4
10^1
3 = 30
10^22 - 200
10^3
1 = 1000
sum 1234

10^0、10^1、10*2...が重み。

ex. 2進数1101
2^01 = 1
2^1
0 = 0
2^21 = 4
2^3
1 = 8
sum 13

2^0、2^1、2^2...が重み。

基数とは

2進数なら2、10進数なら10、16進数なら16。

2進数から10進数

重みとそれぞれの桁の数字を乗算し、全てを和算する。

ex. 1010
2^00 = 0
2^1
1 = 2
2^20 = 0
2^3
1 = 8
sum 10

10進数から2進数

ちょっと変わった割り算をする。
10進数から2進数にするには、2の割り算をし、余りがあれば1、なければ0とし、最後に計算した結果から余りを並べる。

ex. 100
100/2 = 50 余りなし 0
50/2  = 25 余りあり 0
25/2  = 12 余りなし 1
12/2  = 6  余りなし 0
6/2   = 3  余りあり 1
3/2   = 1  余りあり 1 // 最後が1になったら終了

下から並べる 110100

Ans. 110100

2進数から8進数

2進数の3桁は2^3=8
2進数を8進数に変換するには3桁ずつ区切って計算する
最後にそれぞれ区切って計算した結果を並べる。

ex. 100100

100
2^0*0 = 0
2^1*0 = 0
2^2*1 = 4
    sum 4

100
2^0*0 = 0
2^1*0 = 0
2^2*1 = 4
    sum 4

Ans. 44
ex. 1100
100
2^0*0 = 0
2^1*0 = 0
2^2*1 = 4
    sum 4

1
    sum 1

Ans. 14

8進数から2進数

各桁の数字を3桁の2進数で表す。最後に上位の0は省略する。

ex. 117
7 → 111
1 → 001
1 → 001

001001111 → 100111

Ans. 100111

2進数から16進数

2進数の4桁は2^4=16
2進数を10進数に変換するには4桁ずつ区切って計算する
最後にそれぞれ区切って計算した結果を並べる。

16進数
0 1 2 3 4 5 6 7 8 9 A B C D E F 10
10進数
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

ex. 11001100
1100
2^0*0 = 0
2^1*0 = 0
2^2*1 = 4
2^3*1 = 8
    sum 12 → C

1100
2^0*0 = 0
2^1*0 = 0
2^2*1 = 4
2^3*1 = 8
    sum 12 → C

Ans. CC
ex. 1100
1100
2^0*0 = 0
2^1*0 = 0
2^2*1 = 4
2^3*1 = 8
    sum 12 → C

Ans. C

16進数から2進数

各桁の数字を4桁の2進数で表す。最後に上位の0は省略する。

ex. 8B6
6 → 0110
B → 1011
8 → 1000

Ans. 100010110110

参考


関連書籍