【離散数学】コンピュータで扱う「数」の工夫

コンピュータの個々の回路自体は電流が流れていない流れているの二つの状態しか持たない。そこで、全てのデータを0と1の二つの数字のみで扱う2進数に置き換えている。

2進数

0と1の2種類の数字を使い、1の次に桁上がりをする。

基数

1つの桁が取りうる値の個数。2進数の基数は2、10進数の基数は10。

桁の重み

n進数において、ある桁の重みは右隣の桁のn倍、左隣の桁の1/n倍になる。

基数変換

ある基数の値を別の基数の値に変換すること。

2進数→10進数

各桁における値×桁の重みを合計した値が10進数における値になる。

# 2進数の10101
1*16 + 0*8 + 1*4 + 0*2 + 1*1 = 21

# 2進数の0.11
0*1 + 1*1/2 + 1*1/4 = 0.75
10進数→2進数

整数部は基数2で割った余りを順に求め、商が0になるまで繰り返し、余りの数を計算順と逆に並べる。

# 10進数の100
100%2 = 0
50%2 = 0
25%2 = 1
12%2 = 0
6%2 = 0
3%2 = 1
1%2 = 1

1100100

小数部は基数2を掛け、小数部が0になるまで繰り返し、積の整数部分を計算順に並べる。

# 10進数の0.625
0.625*2 = 1+0.25
0.25*2 = 0+0.5
0.5*2 = 1+0

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

8進数は2進数を3桁ごと16進数は4桁ごとに区切って読み替える。桁数が足りない場合は0で補う。

# 2進数の1001011101
# 8進数
001 = 1
001 = 1
011 = 3
101 = 5

1135

# 16進数
0010 = 2
0101 = 5
1101 = D

25D