検索

キーワード


目次

2進数の小数点(固定小数点数・浮動小数点数)の表し方と正規化について

  • 公開日:2021-12-05 21:23:52
  • 最終更新日:2021-12-05 23:27:44
2進数の小数点(固定小数点数・浮動小数点数)の表し方と正規化について

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

10進数で小数点の表現ができるように、2進数でも小数点を表すことができます。


この記事を読むことで、

・2進数の小数点の表し方

・固定小数点数とは

・浮動小数点数とは

・浮動小数点数の正規化について


以上のことが分かります。


また、基数・進数・桁の重みについてより詳しく知りたい方は、

基数とは?IT系国家試験の基本知識、2進数について解説

をご一読ください。基数についてより知ることができます!




2進数の小数点の表し方

数学の画像

2進数の数値を表す方法で、「固定小数点数」と「浮動小数点数」というものがあります。


2進数の1桁は「1ビット」、8桁で「8ビット(1バイト)」です。

この8ビットの中で、小数点を使って数値を表そうとした場合において


・ビット列のどの位置に小数点があるか、決まっている数値を表現するものを「固定小数点数」

・ビット列の小数点を移動させ、移動させた分を指数表記で数値を扱うものを「浮動小数点数」




固定小数点数

数字の画像

固定小数点数は、事前に小数点の位置が決められている場合にのみ用いられます。


2進数固定小数点数の画像


例えば、頭から5ビット分を整数、と決めた(決まっていた)ら、「10001.011」となります。

(符号(+、-)ありの場合は、一番左のビット列が符号用になります)


固定小数点数では、頭から何ビット分を整数にするかが決まっているため、表現できる数値の有効範囲数も始めに決まります。




メリット・デメリット

固定小数点数のメリットとしては、あらかじめ小数点の位置が決まっているため、整数部小数部などの数値やデータの解釈がしやすい点です。

デメリットとしては上記でも説明した通り、頭から何ビット分を整数にするかがきまっているため、表現できる数値に限りが出てきてしまいます。

そのため、整数を表す場合には最大の桁数を利用して表現ができます。

コンピュータでは、一番右側に小数点を置くことで、整数を表すことができます。


固定小数点数の整数部




浮動小数点数

数字の画像

浮動小数点は、小数点の位置を移動させ、移動した分を指数に表します。


2進数浮動小数点数


小数点を移動させたことで、表現できる数値が3桁分増えました。

小数点を移動させた分は、基数と指数を掛け算することで表現でき、この表記法を「指数表記」と呼びます。


指数表記


ここでは、2進数の指数表記を載せてあります。

10進数にしたい場合は、基数のところを「10」にします。


このように、浮動小数点数を使用することで、表現できる数値の有効範囲数を多くとることができます




メリット・デメリット

浮動小数点数のメリットは、小数点の位置を移動することができ表せる範囲が広がる、ということです。

デメリットは、誤差や無限小数が発生してしまい、正確な数値を表現することができなくなってしまうこともある、ということです。

浮動小数点数では、小数点の位置を移動させられはしますが、決められた桁内での数値表現のため、その桁からあぶれた数値は切り捨てや四捨五入などされてしまうため、正確な数値でなくなる場合も出てきてしまうのです。


浮動小数点数の誤差や桁落ち、無限小数については、

浮動小数点数の誤差

で、詳しく解説してるので、併せて読んでみてください!




正規化

パソコンの写真

正規化とは、浮動小数点数において、数値の有効範囲数を広げるために、小数点の位置を移動させることをです。


上記までの説明でも、実は正規化を行っていましたが、ここでは何を正規化というのかを詳しく解説していきます。


指数表記


正規化には、指数表記を使います。


10進数「0.0065」を例に上げてみましょう。


10進数の正規化


小数点を右に2つずらしたことで、0.0065を表現するためには小数点以下の桁数が4桁必要だったところ、小数点を右に2つずらしたことで、仮数部が0.65となり小数点以下の桁数を2桁で表現することができました。




32ビット形式

2進数の正規化を32ビット形式で見てみましょう。

32ビット形式は、よく使われる浮動小数点数の形式になります。


32ビット形式


10進数「0.375」を32ビット形式を用いて正規化してみます。


32ビット形式の正規化①

32ビット形式の正規化②


32ビット形式で浮動小数点数を表現することができました。




IEEE754の形式とバイアス値

上記の32ビット形式での浮動小数点数の表現方法の他に、IEEE754の浮動小数点数形式の表現があります。

IEEE754とは、米国電子電気技術者協会により規格化された形式を指します。

32ビット、64ビット、128ビットなどの形式があります。

先ほどの32ビット形式の浮動小数点数と何が違うのか見てみましょう。


IEEE754


IEEE754では、仮数部を「1.xxxx」のように表現します。


例えば、0.011を

仮数部0.Mで正規化すると→0.11(仮数部が2ビット=小数点以下が2桁必要)

仮数部1.Mで正規化すると→1.1 (仮数部が1ビット=小数点以下が1桁必要)


となります。

IEEE754で表現すると、1ビット多く表現ができるということです。


また、指数部は8ビットで表現します。

2進数で8ビットを表現すると、


IEEE754 2進数表現


となります。


しかし、実際には負の数も扱うため、


IEEE754 実際の指数


が必要です。


指数部分でマイナスを表現することもできますが、分かりやすくするために、実際の指数にそれぞれ、127のプラスすると、整数のみで数値を表現したのです。

「127をプラスする」=「バイアス127」として補正値を加えて値を表現する、ということです。


IEEE754 バイアス


それでは、このIEEE754の形式で浮動小数点数を表現してみましょう。

10進数「0.375」を正規化してみます。


IEEE754正規化①

IEEE754正規化②


IEEE754の32ビット形式で表現することができました。

※補足ですが、指数部が全て「0」で埋められた場合、「0.0」となり、指数部が全て「1」で埋められた場合は、「無限大」という扱いになります。




まとめ

固定小数点数・浮動小数点数と正規化について分かったでしょうか?

また、浮動小数点数では、誤差や桁落ちが発生することもありえます。


浮動小数点数の誤差や桁落ち、無限小数については、

浮動小数点数の誤差

で、詳しく解説してるので、併せて読んでみてください!



【著者】

伊藤

Javaを研修で3か月学んだ、駆け出しのエンジニアです。
現在は、ベンダー資格を取得するため、勉強を日課にできるよう努力中です。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事