10 進数の小数を 2 進数に変換します

[問題 NT-04] 2 進数表記

(1) 7.25 を 2 進数で表してください。

(2) 7.2 を 2 進数で小数点以下 7 桁まで表してください。

 必要なら電卓を使ってください。

問題 NT-04 のヒント

 2 進数は 2 ごとに繰り上がる 1 と 0 のみで表される数字です。
 10 進数で 0, 1, 2, 3, 4 は 2 進数では

0, 1, 10, 11, 100

のように表されます。 10 進数 N を

N = dn 2n + dn-1 2n-1 + ... + d1 21 + d0 20

と表したときの係数 dn が各桁を表すことになります:

  0 = 0 × 20 ⇒ 0
  1 = 1 × 21 ⇒ 1
  2 = 1 × 21 + 0 × 20 ⇒ 10
  3 = 1 × 21 + 1 × 20 ⇒ 11
  4 = 1 × 22 + 0 × 21 + 0 × 20 ⇒ 100

とまあ、整数ならそれほど難しくないのですが、小数だとはたしてどうなるか ...... 実は (2) はかなりの難問です。

フェルマーの大定理―整数論の源流 (ちくま学芸文庫)

中古価格
¥262から
(2017/9/1 13:38時点)

問題 NT-04 の解答

(1) 最初に上の説明の通り 7 を 2n で表すと

7 = 1 × 22 + 1 × 21 + 1 × 20

となるので、 2 進数では

[10 進数] 7 ⇒ [2 進数] 111

と表記されることになります。計算技術的には簡略化された方法が知られているので、記事の下でその方法も紹介しておきます。

 小数点以下は 1/2n の項を作って表すことになります。電卓などで 1/2n の数値を予め並べておきます。

 1/2 = 0.5, 1/4 = 0.25, 1/8 = 0.125, 1/16 = 0.0625, 1/32 = 0.03125
 1/64 = 0.015625, 1/128 = 0.0078125, 1/256 = 0.00390625

 すると 0.25 は

0.25 = 1/4 = 0 × 1/21 + 1 × 1/22

ですから 2 進数では 0.01 と表されます。したがって先の 7 の 2 進数表示と合わせて

[10 進数] 7.25 ⇒ [2 進数] 111.01

と表されることがわかります。小数点以下についても簡略化された計算法がありますので、記事下の補足を読んでおいてください。

(2) 0.25 は比較的すっきり表せましたが、2 進数で 0.2 という数字は相性が悪く、無限級数になってしまいます。問題では小数点以下 7 桁まで求めよとなっているので、(1) で並べた数字を使って近似値を計算します。 0.2 の中には 0.125 が1つありますから、1/23 の位は 1 です。そして 0.2 から 0.125 を引きます。

  0.2 - 0.125 = 0.075  1/23 の桁は 1

 以降同じようにして各桁の数字を求めていきます。

  0.075 - 0.0625 = 0.0125  1/24 の桁は 1

  0.0125 < 0.03125  1/25 の桁は 0

  0.0125 < 0.015625  1/26 の桁は 0

  0.0125 - 0.0078125 = 0.0046875  1/27 の桁は 1

 以上より、10 進数の 7.2 は 2 進数で

[10 進数] 7.2 ⇒ [2 進数] 111.0011001

と表せることになります。
 

補足 10 進数 ⇒ 2 進数の変換法

 まず整数部分から。6 を例にとって計算してみます。
 まず 6 を 2 で割り、商が 0 になるまで順に 2 で割っていきます。

6/2 = 3 余り 0
3/2 = 1 余り 1
1/2 = 0 余り 1

 そして余りを下から順に並べて 110 が得られます。小数点以下は整数なるまで順に小数部分に 2 をかけていきます。そして掛け算の結果が 1 未満ならその桁は 0, 1 以上ならその桁は 1 となります。たとえば 10 進数で 0.25 だと、

0.25 × 2 = 0.5 : 0 (小数点以下 1 位)
0.5 × 2 = 1   : 1 (小数点以下 2 位)

となって、上から並べて 0.01 となります。 10 進数で 0.2 ならば、

0.2 × 2 = 0.4 : 0 (小数点以下 1 位)
0.4 × 2 = 0.8 : 0 (小数点以下 2 位)
0.8 × 2 = 1.6 : 1 (小数点以下 3 位)
0.6 × 2 = 1.2 : 1 (小数点以下 4 位)
0.2 × 2 = 0.4 : 0 (小数点以下 5 位)

となって循環することが簡単にわかります:

[10 進数] 0.2 ⇒ [2 進数] 0.001100110011 ......

 ≫ [問題05] 包除原理 ≫ 数学演習問題

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください