見出し画像

小数点を含む数の表し方

前々回の記事で、小数点を含む2進数の計算方法を紹介しました。
これで、2進数の四則演算も小数を含む計算もできるようになって2進数は完璧!!と思いたいところですが…
実は小数点を含む数の表し方って1つだけではないのを皆さん知ってましたか?

そこで今回は、小数点を含む数の表し方を、長所や短所も交えながら2つほど紹介していこうと思います!
そしてこれは2進数に限った話ではなく、10進数も含めた"数全般の小数点を含む数の表し方"になるのですが、
分かりやすくするために、今回は1番馴染みのある10進数を使って説明していきたいと思います。

●固定小数点数

1つめに、固定小数点数というものをご紹介します。
以下の説明をご覧ください。

固定小数点数 【 fixed-point number 】
固定小数点数とは、コンピュータが実数を扱うときの表現形式の一つで、小数点が特定の位置に固定されているもの。

これだけでは何を言っているのかよく分かりませんね?

たとえば、4桁のビットの数があったとします。
(→4ビットでは表せる数がとても少なくなってしまうので普通はあまり使わないのですが、今回は簡単に説明するために4ビットとします。)
ここで"一番左の桁から2桁を整数にする"というルールを決めたとします。
このルールに則ると
「12.34」や「43.21」という数が表現されることになります。
またこのとき、仮に13という整数があった場合、その数は「13.00」と表されますし、0という数は「00.00」と表されます。

つまり

画像1

「小数点の位置を〇〇ビットめに置く!と決めて、小数点よりも左側で整数部分を表し、小数点よりも右側で小数部分を表す。」
そんなふうにして表された数が固定小数点数というわけです。

そしてコンピュータでは、固定小数点数というのはズバリ整数を表す時に利用されています!!
え?固定小数点数っていうくらいだし、小数を表すんじゃないの?どういうこと???
と思いましたよね。

理屈は簡単です。
"最下位ビットの右側を小数点にする"というルールを決めてしまえば、小数部分に割くビットは0となり、整数だけが扱われるという事です。

画像2


●浮動小数点数

次に、浮動小数点数というものをご紹介します。
以下の説明をご覧ください。

浮動小数点数 【 floating point number 】
浮動小数点数とは、コンピュータにおける数値の表現形式の一つで、数値を桁の並びを表す仮数部と小数点の位置を表す指数部に分割して表現する方式。小数点以下の値を含む数値の表現法として最も広く利用されている。

仮数部や指数部など聞きなれない単語も出てきて、固定小数点数の説明よりも難しくなりました...。
こちらもこれだけでは何を言っているのかよく分かりませんね?

たとえば「0.0017」という数があったとします。
この数の小数を右に2つ移動させて、その分を「基数(10)の2乗」とした形のかけ算にしてくっつけると全く同じ数が表せます。
つまり0.17×10⁻²となります。

画像3

基数は、2進数なら"2"、10進数なら"10"と決まっているので、いちいち覚えている必要はありません。
よって、浮動小数点数は残りの可変部分(符号、仮数、指数)の値をビットに割り当てて、数を表現します。

画像で表すとこんな感じ!

画像4

このようにすることで、固定小数点数では4ビットなら4桁まで、8ビットなら8桁までしか表現できませんでしたが、その制限を気にせずに小さな数や大きな数を表現できます。

●浮動小数点数の正規表現

浮動小数点数の説明で、固定小数点数で制限されていた表現できる数値の範囲を広げるために、指数部と仮数部を用いた指数表記を使って利用されていると説明しました。

例えば、0.0017を別の表し方にしたいと考えたとします。
このとき、「0.0017」は、 「0.017× 10⁻¹」とも「0.17×10⁻²」とも表現できます。
このように、仮数部と指数部を変えることで、より幅の広い表現ができるのです。
より有効桁を多くとれるように(範囲を広げるために)小数点の位置を調整することを正規化といいます。

画像5

正規化によって有効な桁数を多く取ることができると、その分誤差が減るため、精度の高い計算を行うことができるという利点があります。

●固定小数点数・浮動小数点数の長所と短所

固定小数点数は、浮動小数点数に比べて表現できる値の範囲ははるかに狭くなります
コンピュータでは2進数しか表せないことを加味すると
4ビットなら符号なしで「0000」~「1111」(10進数で0~15)まで、符号ありで「1000」~「0111」(10進数で-8~7まで)しか表せないことになります。

画像6

その代わり、小数点の位置が変わらないため計算が簡単にできる(高速に演算できる)ところに利点があります。
そしてコンピュータでは、それぞれの長所を生かせる場面で利用されています。

●まとめ

・固定小数点数
→固定小数点数では小数点の位置が固定されていて、小数点の左側で整数部を、右側で小数部を表します。
コンピュータ内では、小数点の位置を一番右側と決めることで、整数を表す方法に用いられています。
・浮動小数点数
→浮動小数点数では、小数点の位置を動かし、動かした分を「基数の〇乗」かけることによって表します。
基数などの固定部分は覚えずに、可変部分(符号、仮数、指数)をそれぞれ割り当てて数を表現します。
・浮動小数点数の正規化
→より有効桁を多くとれるように、小数点の位置を調整することを正規化といいます。
・固定小数点数・浮動小数点数の長所と短所
→固定小数点数は表せる数の範囲が狭くなります(⇄浮動小数点数は表せる範囲が広いです)。
しかし、固定小数点数では小数点の位置が固定されているため、計算がとっても簡単なので、浮動小数点数と比べて高速で計算することが可能です。

今回はここまで!
次回もお楽しみに!!

この記事が気に入ったらサポートをしてみませんか?