Blogブログ

固定小数点表示、浮動小数点表示について

エンジニアの信尾海翔です。
第四回目のブログでは固定小数点表示、浮動小数点表示についてまとめたいと思います。

固定小数点表示、浮動小数点表示とは

固定小数点表示

指数などを持っていなく、小数点を置く桁の位置が固定されている。
普段の生活でよく見かける小数です。
例:1.23456、789.01

浮動小数点表示

指数を持っていて、広い範囲の桁数を扱うことができる。
例:1.23×4^5
1.23の部分を仮数
4の部分を基数
5の部分を指数と呼びます。

10進数を浮動小数点表示

例として10(10進数)を浮動小数点で表してみたいと思います。

10(10進数)を2進数で表すと1010(2進数)
1010(2進数)を指数を使って表示すると0.1010×2^4
0.1010×2^4を浮動小数点表示させると

浮動小数点は以下の順番で表示させます。
左1ビット → 符号
左2ビット~8ビット → 指数部
左9ビット~16ビット → 仮数部

符号 → 今回は負数ではないので0
指数部 → 指数4を2進数に変換して0000100 ※負数の場合は2の補数で表します。
仮数部 → 仮数は1010

三つを繋げて0000010010100000
10(10進数)を浮動小数点表示すると0000010010100000となります。

計算しにくい場合は正規化を行うこともあります。
正規化は最上位に0がきている時などに計算しやすいように指数を減らしたりして
調整します。
例:0.01234×10^5 → 0.1234×10^4
※1234の前の0を一つ取り除いたので10^5だった部分が10^4になっています。

今回は浮動小数点表示を16bitで行いましたが、他にもよく使われるものとして32bit、64bitなどもあります。

また浮動小数点の決めた範囲(今回は16bit)で表現できる数値を超えてしまうことがあります。
最小値を超える → アンダーフロー
最大値を超える → オーバフロー
この場合、正しい数値と誤差が生まれます。
この他にも丸め誤差、打ち切り誤差、情報落ち誤差、けた落ち誤差などがあります。

  • 丸め誤差 → 浮動小数点の決めた範囲で表現するために切り捨てなどをした時に誤差が発生
  • 打ち切り誤差 → 様々な理由で計算処理を途中で打ち切った時に誤差が発生
  • 情報落ち誤差 → 大きい値と小さな値(差が大きいもの)の計算を行った時に誤差が発生
  • けた落ち誤差 → 値が近い(ほぼ等しい)もの同士を計算した時に誤差が発生

余談

浮動小数点表示は基本情報などでもよく出題され、仮数、指数、基数、正規化の4つと誤差の種類を覚えてしまえば、比較的得点を取りやすい問題だと思ってよく練習していました。

信尾

執筆者

Developer

信尾