無料体験

【高校情報Ⅰ】浮動小数点数(正規化、単精度、倍精度)|共通テスト完全攻略勉強法_118

  • 前回は、補数の説明をしました。 補数は、2進法における負の数の表現や、引き算の演算において使われ、「いくつ足すと基準の数になるか」という数字のことを指します。 そして、負の数も表現するというルールを加えると、正の数を表現できる数が約半減する、ということをお伝えしましたね。
    さて今回も、数値の表現の一つである浮動小数点数について詳しく解説していきます。

①2進数の小数

  • 浮動小数点数とは、コンピュータで小数点を含む数を表現するための1つの形式です。 まずは、2進数で小数をどのように表現するかを説明していきますね。 皆さんが理解しやすいように、まずは10進数の小数の仕組みから説明します。動画を見てくださいね。
  • はーい!簡単だといいけど・・・
    え、動画見たけど終わらなくない!?
  • はい、途中から0011を繰り返して続いていく「循環小数」となってしまいます。 このような場合は、区切りの桁を決めて、それ以降の桁は丸めて切り捨ててしまいます。 このように10進数の値を完全な2進数の値で表現できるパターンは実は少なく、途中の桁で区切らなければなりません。 この、2進数にすることで生じる誤差のことを、「丸め誤差」と言います。

②浮動小数点数

  • 先程説明した通り、コンピュータでは限られたビット数の中で小数値を扱わなければなりません。 そのため、いかにビット数を節約した 書き方にするかということが求められます。
    例えば、理科でアボガドロ数を習ったかと思います。 1mol中の分子の数は、「602214076000000000000000」となります。 読めますか?これ? 6022垓1407京6000兆です。 天文学的な数字になるので、理科では6.02×10の23乗と習ったかと思います。 このように、10の何乗をかける方法で、桁の数を少なく表現することができますよね。 これを使うと先程の0.01001100110011001100....は、
    「100.11×₂⁻⁴ 10.011×₂⁻³ 1.0011×₂⁻² 0.10011×₂⁻¹」
    このような表現方法をした方が分かりやすいです。 小数点の位置を移動させる。つまり、浮かせて表現する形式を「浮動小数点数」と言います。 コンピュータでは浮動小数点数を用いることで表現できる桁数を多くし、さらにはビット数の節約も行っています。 このように、浮動小数点数の形式に変換することを「正規化」と呼びます。 なお、浮動小数点数の正規化は、全ての値を32ビットもしくは64ビットで表現します。 32ビットで表現する場合を「単精度浮動小数点数」、64ビットで表現する場合を「倍精度浮動小数点数」と言います。 なぜ2種類の表現方法があるかというと、どれくらいの誤差を許容できるかがデータによって異なるためです。
  • ん?どういうこと?
  • 例えば、円周率は3.14と小学校で習いましたが、実際には3.1415926535...というように、続いていくわけです。 円周や直径を求める場合、3.14よりも3.1415926535を使ったほうがより正確な値を求められますよね。 つまり、表現できるビット数が長いほど誤差が小さくなるということです。 ビット数が長いとそれだけデータ容量が増えることになりますから、それほど精度を求めない値には単精度浮動小数点数を使います。 一方で、物理学や化学などの分野では、非常に大きな数値、または、非常に小さな数値を扱うことがよくあります。 このような緻密な計算が求められる場合は、小数部の精度を維持するために倍精度浮動小数点数が使用されます。

③正規化の方法

  • では実際に、どのように2進数の値を正規化していくのかを説明していきます。 ここでは、先程の0.01001100110011001100....を例に挙げて、正規化の方法を説明していきますよ。 今回は分かりやすく、単精度浮動小数点数を使って説明しますね。詳しい解説は動画を見てくださいね。
  • うーん、わりかんアプリ使って1円単位できっちり払わせるくらいせこケチだね。
  • はい。この表現方法を「けち表現」と呼びます。 1ビットでも節約できるようにしておくことで、表現できる桁数が増え、先程の誤差の値をなるべく小さくすることができるのです。

まとめ

  1. 浮動小数点数とは、コンピュータで小数を表現するための形式のことを言う。
  2. 10進数を2進数化すると、大抵の場合は循環小数となるため、誤差が発生する。
  3. 浮動小数点数の形式に変換することを正規化と呼び、32bitもしくは64bitで表現する。