基本情報 10進数と2進数の双方向計算、小数部と循環小数、2進数から8,16進数の変換。
参考
やさしい基本情報技術者講座 2016, 高橋麻奈, P7 ~
変換テーブルアプリ、検算とか問題作るのに使える
10 進数からの変換
2進数 への変換が計算が必要で一番難しい。
10 進数から 2進数 -- 2 to 10 , 4 to 100, 8 to 1000
2進数へ。
10 進数 : 2進数
1 : 1
2: 10
これ以上その桁に入らないときは、10進数が 9 から 10 になるように
2 進数は 1 から 10 になる
3 : 11
4: 100
同じように 11 から 100 に桁が上がる
5: 101
6: 110
7: 111
8: 1000
下二桁が 01, 10, 11, と順番に上がってから次の桁に上がっていく。
10 進数から 2 進数へ。小数部 -- 0.625 to 0.101
10進数の小数部を2進数へ変換する場合は 小数部がなくなるまで2倍する
0.625 x 2
1.250 x 2 , この結果から 整数部の 1 をとる
0.500 x 2
1.000 , これで小数部がなくなったから終わり。
これの 整数部を 上から読んで行き
0.101 になる。
10進数から2進数へ。循環する場合
0.1 などは循環するらしい。やってみる
0.1 x 2
0.2 x 2
0.4 x 2
8 x 2
6 x 2
0.2 x 2, ここで 0.2 がもう一度出てきてしまう。
0.4 x 2
0.8 x 2
1.6 x 2
....
と、0.000100010001 と
0 3 つの後に1 が続く無限ループになってしまう。
だからこの計算に出てくる
10進数の 0.1, 0.2, 0.4, 0.8, 1.6, は全て 2 進数にする時に循環する。
0.9 とか 0.7 とかも倍にしたら循環に組み込まれるので、
0.5 とか 0.25 とか 1/4 になるやつじゃないと、だいたい循環しちゃう。
10 進数から 8 進数へ。 -- 8 to 10, 16 to 20
8 進数へ。
1: 1
7: 7
8: 10
9: 11
15: 17
16: 20
8 の倍数ごとに 10, 20 と繰り上がっていく。
10 進数から 16 進数へ -- 10 to A
16 進数へ。
10
1: 1
9: 9
10: A
15: F
16: 10
9 の次が A になって、16 の倍数で 10 に繰り上がる。
2 進数からの変換
基本的にまず 10進数に変換して、それを 8, 16 進数に変換する。
2 進数から 10 進数へ。整数部。 1011 to 11
10 進数へ。整数。
1011 なら
23 + 0 + 21 + 20
8 + 0 + 2 + 1
11
になる
2進数から10進数へ。小数部。 -- 0.1 to 0.25
0.1 なら
0 * 2^-1 + 1 * (2^-2)
で-2条を桁の数して
0 + 1 x ( 1/4 )
0.25 になる
2 進数からの 8 進数 -- 1101 to 15
2 進数からの 8, 16 進数では bit 数を意識すれば、23 + 22 + ... とやらなくて良くなる。
例えば 2進数の 1101 の変換では
8 進数は 23 で 3 bit なので 3 桁ずつ変換する。
1 と 101 に分けて
1 と 22 + 0 + 20
1 と 4 + 1
1 と 5
で 15 になる。
2進数から16 進数 -- 1101 to D
16 進数は 24 なので 4 bit 。よって 4 桁ずつ変換する。
なので 2進数の 1101 は
1101 そのまま4桁を 16 進数に変換して
23 + 22 + 0 + 20
8 + 4 + 0 + 1
これは 10 進数だと 13 だが、16 進数では 9 の次が
9, 10, 11, 12, 13
9, a, b, c, d
となるので、2 進数の 1101 は 16 進数の D になる。