ここでは 10 進数の実数を「固定小数点数」形式の 2 進数に変換する方法について学びます。

固定小数点数は小数点の位置が固定されているという形式で、具体的には次のようにして求めます。
なお負の実数は2 の補数演算によって計算できるので、ここでは 0 以上の場合のみを考えます。

0 以上の 10 進数の実数を固定小数点数形式の 2 進数に変換

A を 0 以上の 10 進数の実数とする

  1. A の整数部を 2 進数に変換する
  2. A の小数部を 2 進数に変換する
  3. (1)と(2)を小数点でつなぐ

逆に 2 進数を 10 進数の実数に基数変換します。

2 進数を 0 以上の 10 進数の実数に変換

 

  1. 与えられた2進数の整数部を 10 進数に変換する
  2. 与えられた2進数の小数部を 10 進数に変換する
  3. (1)と(2)を足す

では例として 10 進数 12.625 を 2 進数(整数部の桁数 4 ビット、小数部の有効桁数 4 ビット)に変換してみましょう。

例: 12.625 を 2 進数に変換

A = 12.625 とする

  1. A の整数部(12)を 2 進数に変換すると 0b1100
  2. A の小数部(0.625)を 2 進数に変換すると 0b1010
  3. (1)と(2)を小数点でつないで 0b1100.1010

逆に 0b1100.1010 を 10 進数の実数 0 以上の実数に変換してみます。

例: 0b1100.1010 を 10 進数の 0 以上の実数に変換

 

  1. 与えられた2進数の整数部(0b1100)を 10 進数に変換すると 12
  2. 与えられた2進数の小数部(0b1010)を 10 進数に変換すると 0.625
  3. (1)と(2)を足して A = 12.625

もう少しむずかしい例として、今度は 10 進数 123.123 を 2 進数(整数部の桁数 8 ビット、小数以下の有効桁数 4 ビット)に変換してみます。

例: 123.123 を 2 進数に変換

A = 123.123 とする

  1. A の整数部(123)を 2 進数に変換すると 0b01111011
  2. A の小数部(0.123)を 2 進数に変換すると 0b0010
  3. (1)と(2)を小数点でつないで 0b01111011.0010

逆に 0b01111011.0010 を 10 進数の実数 0 以上の実数に変換してみます。

例: 0b01111011.0010 を 10 進数の 0 以上の実数に変換

 

  1. 与えられた2進数の整数部(0b01111011)を 10 進数に変換すると 123
  2. 与えられた2進数の小数部(0b0010)を 10 進数に変換すると 0.125
  3. (1)と(2)を足して A = 123.125

なお変換後の値 123.125 が元の 123.123 と異なる理由は丸め誤差が生じたためです。