1-1 2進数と基数変換

2進数 → 0,1の『2』種類の数字からなる数値(コンピュータが使用する)

10進数 → 0,1,2,3,4,5,6,7,8,9の『10』種類の数字からなる数値(私たちが使用する)

基数 → 数字に何種類の文字を使用しているか(10進数の基数は10

ビット → 2進数の桁、情報の最小単位(0か1か)

バイト → 8ビット(空の枠が8個あるイメージ)

基数を変換することを『基数変換

10進数は桁ごとに1の桁、10の桁、100の桁・・・があり、
これは桁ごとに基数倍していることがわかる。

桁数4321
桁ごとの数字103
=1000
102
=100
101
=10
100
=1
例の数1011
10進数で1011を表すとき(1011)10とも表す。
今回は 1000+10+1 = 1011 となる。


上記と同じように2進数でも桁ごと数字があり、それは次のように表す。

ビット数(桁数)87654321
桁ごとの数字(重み)27
=128
26
=64
25
=32
24
=16
23
=8
22
=4
21
=2
20
=1
例の数10110001
重みと例の2進数をかけて総和をとる
今回は 128+32+16+1 = 177 となる。

よって、(10110001)2 = (177)10

練習問題 次の2進数を10進数に直しなさい。

(1) 1000010

(2) 01110111

(3) 11101110

答え:66,119,238

二つの方法がある。
例として(42)10を2進数に変換する。

一つ目の方法 2のべき乗に分解して考える

ビット数654321
重み32168421
42101010
42以下の最大の重みを探して1とする。対象の数字から引いて、残りの数字が0になるまで同じ操作をする。
42-32 = 10 → 10 – 8 = 2 → 2 – 2 = 0
101010

2つ目の方法 2で何回割れるか

元の数を2で割っていくことを反復することで求めることもできる。

これは2で割った時の余りは0,1のみであることを活かした方法であり、この場合の最後の1は2を5回割っていることを示し、5を背負っているとイメージ。

101010

練習問題 次の10進数を2進数に直しなさい。

(1) 66

(2) 119

(3) 238

答え:1000010,01110111,11101110

10進数と同じよう桁上げ桁借りを行う。

加算

10進数の 9 + 6 = 15 では桁上げが生じている。
同様に2進数での 0110 + 0011 は次のようになる。

減算

10進数の 15 – 9 = 7では桁借りが生じている。
同様に2進数での 1010 – 1 は次のようになる。

乗算

10進数と同じように筆算を行うことができる。
加算で行った桁上げを使う。

徐算

10進数と同じように筆算を行うことができる。
減算で行った桁借りを使う。

練習問題 次の2進数を計算しなさい。

(1) 10010+11011

(2) 101-11

(3) 111*1010

(4) 10001/101

答え:101101, 10, 1000110, 11あまり10

10進数での小数点が1/10倍していくように2進数では1/2倍していく。

2進小数から10進小数

ビット数(桁数)0-1-2-3-4
桁ごとの数字(重み)202-1
=1/2
2-2
=1/4
2-3
=1/8
2-4
=1/16
例の数0.1011
重みと例の2進小数をかけて総和をとる
(0.1011)2 = 0.5+0.125+0.0625 = (0.6875)10

10進小数から2進小数

2つの方法がある。
例として(0.625)10を変換する。

一つ目の方法 2のべき乗に分解して考える

ビット数(桁数)0-1-2-3-4
桁ごとの数字(重み)202-1
=1/2
2-2
=1/4
2-3
=1/8
2-4
=1/16
0.6250.1010
0.625以下の最大の重みを探して1として、対象の数字から引いてあげて、残りの数字が0になるまで繰り返す。
0.625-0.5 = 0.125 → 0.125-0.125 = 0

2つ目の方法 2でかけてみる

小数点以下の10進数に2を掛けた結果の小数部分が「0」になるまで掛けていき変換する。

2を1回かけて1になるのは0.5
2を3回かけて1になるのは0.125
のようなイメージ

練習問題 2進小数を10進小数、10進小数を2進小数に変換しなさい。

(1) (0.1111)2

(2) (0.0625)10

(3) (1.7)10

答え:(0.9375)10, (0.0001)2, 約(1.10110011)2