CPUをつくろう -2進数と16進数編-

2進数

コンピュータは全ての数を0と1のみで表現する。対して人間は0〜9までの数字を使って数を表現する。0〜9をで表現する数を10進数、それに対し0、1のみで表現する数を2進数という。

10進数と2進数の対比を以下に示す。

10進数2進数
00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011
121100
131101
141110
151111

10進数は、0,1,2…と進んで行き9まで来ると桁上がりして10となる。10進数の10から1を引いた数”9”まで来ると桁上がりする。

2進数は、2から1を引いた数”1”まで来ると桁上がりする。つまり全ての桁が1になると桁上がりをする。例えば1の次は桁上がりして10となる。ちなみに2進数の10は”ジュウ”ではない。10と書いて”イチゼロ”とか”イチマル”と言う。

ここで、10と書いても10進数のジュウなのか、2進数のイチゼロなのか区別がつかないため、普通は10進数の場合は頭に”d”をつけてd10のように書き、2進数の場合は頭に”0b”をつけて0b10と書く。dはデシマルの略、bはバイナリの略である。10進数のdは省略する場合が多い(と思う)。

2進数の場合、1桁を”bit(ビット)”という。bitというのがコンピュータで数を表す最小単位となる。0b10は2bitだし、0b1111は4bitである。

bitが8つ集まった8bitの事を”Byte(バイト)”という。0b11111111は1Byteである。

コンピュータで2進数を扱う場合、表記を1Byte単位に合わせて書く場合がある。0b1なら0b0000 0001、0b11110なら0b0001 1110と書く。この際4bit毎にスペースを入れて書くと読みやすくなる。(理由は後の16進数の項目で説明する)

10進数と2進数の変換

・10進数から2進数へ

10進数を2進数に変換するには、変換したい10進数の数字を商が0になるまで2で割り続け、余りを求めていく。求められた余りが変換後の2進数となる。

例えば35を2進数に変換すると、0b0010 0011となる。

・2進数から10進数へ

2進数から10進数に変換するには、各bitの値にその桁の「重み」を掛ける。重みという言葉が出てきたが、n桁目の重みは2のn-1乗となる。例えば、3桁目の重みは2の2乗となって4である。そして最後に各桁で算出した値を足し合わせる。

先ほどの0b0010 0011を10進数に変換すると、下記の通り35となる。

コメントする