しがない大学生の備忘録

しがない大学生が研究やプログラムに関することを忘れないためにメモしておく備忘録。他の人の役にも立つといいな。

2進数と基底変換

2進数

当たり前だけど,コンピュータは2進数で動いている.
つまり,

2進数:0→1→10→11→100→101→110→111→1000→・・・ 10進数:0→1→2→3→4→5→6→7→8→・・・

ってな対応関係.
ちなみに,mbitで表せる数は2m通り. 8bitを1単位とするバイトという単位が一般的であり,このバイトと表す数として16進数がよく使われる.
16進数を使用すると1バイトを2桁で表せるかららしい. 2進数や16進数における2や16は基数と言う.

基数変換

2進数から10進数など,ある基数で表された数を別の基数で表現するために変換を行なうこと.

n進数→10進数

各桁でnをすることで変換可能.
0桁目からなので注意.

例:
2進数:1101.011の場合
1×23+1×22+0×21+1×20+0×2-1+1×2-2+1×(-3)=13.375

10進数→n進数

n進数→10進数とは逆にnで割っていく.
余りが0になるまで続けてその商を並べたものが変換後の数となる.

例:
10進数:13.375の場合
13.375÷23=1・・・5.375
5.375÷22=1・・・1.375
1.375÷21=0・・・1.375
1.375÷20=1・・・0.375
0.375÷2-1=0・・・0.375
0.375÷2-2=1・・・0.125
0.125÷2-3=1・・・0

2進数→8進数,2進数→16進数

2進数から8進数や16進数に変換するのは,8や16が23や24で表せるだけあって,簡単に行なえる.
8進数では3桁区切りで,16進数では4桁区切りでそれぞれの進数表記にすればいいだけ.

例:2進数で1101.01
8進数の場合:
001 | 101 . 010 ←3桁ないところは0を補う
1 | 5 . 2
16進数の場合:
1101 . 0100 ←4桁ないところは0を補う
D . 4 ←13は16進数でいうD

8進数→2進数,16進数→2進数

上記と逆で3(4)桁区切りで2進数に直す.

例1:8進数で15.2
1 | 5 . 2
001 | 011 . 010 → 1011.01
例2:16進数でD.4 D . 4
1101 . 0100