KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

基本情報 10進数と2進数の双方向計算、小数部と循環小数、2進数から8,16進数の変換。

参考

やさしい基本情報技術者講座 2016, 高橋麻奈, P7 ~

www.rapidtables.com

変換テーブルアプリ、検算とか問題作るのに使える

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

  1. 8 x 2

  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 になる。