固定小数点数とは? わかりやすく解説

こていしょうすうてん‐すう〔コテイセウスウテン‐〕【固定小数点数】

読み方:こていしょうすうてんすう

小数点位置固定して表現された数。コンピューターにおいてはあたかも整数値のように扱うことで処理が容易で高速になるが、絶対値大きく異なる数同士計算には向かない。→浮動小数点数


固定小数点数

読み方こていしょうすうてんすう
【英】fixed point number

固定小数点数とは、コンピューター演算における数値扱い方のひとつで、小数点特定の位置固定され表現される数値表現手法のことである。例えば、整数どうしの計算場合には小数点最下位(右の端)で固定され変動しない、といった方式を指す。

これに対して小数点位置自由に変動しうる表示方式が、浮動小数点数呼ばれる浮動小数点数比べると、固定小数点数は、表現できる数値範囲が狭いが、しかし計算速度速い

プログラミングのほかの用語一覧
コーディング:  記憶クラス  キャスト  共用体  固定小数点数  コーディング  コード最適化  コメントアウト

固定小数点数

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/08 16:08 UTC 版)

固定小数点数(こていしょうすうてんすう、: fixed-point number)は、小数点が置かれる桁を固定して表されたのことで、コンピュータ上で小数を表現する方法として使用される形式のひとつである。ある桁数のうちのある場所に小数点が固定されているもの(固定小数点)として扱う方式であるため、表現される仮数部に対して小数点の位置が移動する浮動小数点数の対義語として用いられる。すなわち、「固定-小数点数」ではなく「固定小数点-数」である。

演算自体は整数型と同じ方法で行われ、小数点位置は設計者の意図によって決定される。10進法で言えば、たとえば整数123は下から1桁分を小数点以下と決めれば12.3を表し、下から2桁分を小数点以下と決めれば1.23を表すことになる。コンピュータ上での演算で広く使用される2進法では、2進整数1111011(10進法表記: 123)は下から1桁分を小数点以下と決めれば111101.1(10進法表記: 61.5)、下から2桁分を小数点以下と決めれば11110.11(10進法表記: 30.75)となる。以下の文章では、特に断りがない限り2進固定小数点数について述べる。

特徴

浮動小数点数に比べて表現できる値の範囲ははるかに狭いが、情報落ちが起こらない(そもそも情報落ちが起きるような差のある値は表現できない)ことや高速に演算できることが利点に挙げられる。コンピュータグラフィックスで用いられる座標や画素値はある程度値域が限られるため、固定小数点数でも表現することができ浮動小数点数にくらべ高速に計算できるようになる。また、コンパイラなどにおいて、変数を定数で除算するような場合、普通に除算するよりも、除数の逆数を固定小数点の要領で表現したものを乗じてシフトして答えを求めた方が高速であることがあるため、そのような最適化をおこなうことがある[1]

なお、信号処理を実行するためのデバイスであるデジタルシグナルプロセッサでは、処理対象である信号の振幅の値の範囲が固定小数点的であるので、コストの高い浮動小数点演算のハードウェア (FPU) を搭載せず、固定小数点数が主に用いられる。現代のパソコンにおいては、演算を行うCPUにFPUが付属するものが主流であるため、小数の計算は一般に浮動小数点数を用いるものがほとんどだが、対象とするデータの特性や特に高速化が必要なコーデックなどでは固定小数点を用いることもある。

また、10進法での小数は2進法の小数として表現すると必ずしも有限小数とはならず、誤差を生じる。そのため、貨幣に関する計算のような、小数点以下で必要な桁数は決まっているが、2進法との変換を回避したい場合に、小数点以下の桁数をビット単位ではなく10進法の桁数で決めた固定小数点数も処理に用いられる[2]。当然のことだが、10進計算が万能で無誤差というわけではない。例えば、3の倍数でない値を3で割る場合、10進計算では解が無限小数になるため、誤差は避けられない。

Q表記(Qフォーマット)

固定小数点数は、小数部分のビット数をQ表記(Qフォーマット)で表す。例えば、小数部分のビット数が12ビットである場合には、Q12表記もしくはQ12フォーマットと呼ばれる。

例えば、1.5をQ1表記で表現すると2進数表記では11である。この表記ではビット0とビット1の間に小数点がある。

注:(1*2^0)+(1*2^-1)=1.5

固定小数点演算

固定小数点演算における四則演算においては、加算や減算はそのまま整数同士の加減算として計算できる。しかし、乗算や除算では演算結果の小数点位置が掛けた数の小数点の位置だけずれることになるため、元の小数点位置に戻す場合には乗算では右側(LSB側)へ、除算では左側(MSB側)へシフト演算を行う必要がある。

ここでは例えば、1.5と0.5の加算を考えてみる。1.5、0.5はQ1表記では各々2進数表記で11、01である。これらQ1表記の数(11と01)をそのまま足してみると100となるが、100を元の実数に直すと2.0であるので通常の加算のまま計算できている。次に乗算を考え単純にQ1表記の数(11と01)を掛けてみる。結果は11であるがこれをQ1表記であるとみなして実数に直すと1.5となる。1.5と0.5の乗算結果の正解は0.75であるのでこの解釈は間違いである。乗算では、小数点部分のビット数が、乗算対象となる2つの固定小数点数の小数点部分のビット数の和になる。Q1表記同士であれば、計算後の小数部のビット数は1ビット足す1ビットで2ビットとなる。そのため乗算結果の11はQ2表記として解釈する必要がある。またQ1表記に直す場合には、1ビット右にシフトする必要がある。

また、浮動小数点数にくらべ表現可能な範囲が狭く算術オーバーフローや算術アンダーフローが発生しやすいことに注意したほうがよい。

固定小数点数の精度

固定小数点方式で有効桁数が十分にとれるのは、(符号ビットを除く)最上位桁が1の範囲内だけである。この時の相対誤差は桁数がn桁の時1/2nである。表現しようとする数が0に近づき上位桁が0で埋まる(ないし2の補数表現の負の数であれば1で埋まる)と、有効桁数はそれだけ減るので、その場合に必要な精度を満たしているか注意が必要である。

実数値と固定小数点数値の換算

ある実数を x とし、これを固定小数点数で表した整数を n とする。最下位ビットを実数 L、オフセットを実数 O と定めると、実数 x は固定小数点数で次の数 n となる。ここで、round は四捨五入関数である。

カテゴリ


固定小数点数

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/18 17:58 UTC 版)

コンピュータの数値表現」の記事における「固定小数点数」の解説

詳細は「固定小数点数」を参照 固定小数点数形式は、金銭勘定など浮動小数方式相性が悪い場合、すなわちビジネスにおける計算表計算ソフトCOBOLなど)でよく使われる。「浮動小数点数精度では十分ではない場合採用される」というのは誤解である。単精度場合足りないようであれば、それは同じ長さ固定小数方式であっても足りてない。 整数部と小数部のビット数は、必要とされる精度範囲十分なように選ばれる例えば、32ビット形式では、整数部に16ビット小数部に16ビットといったように設定される位置重み付けは、整数部と小数部で連続的となる。例え整数部が、8の位、4の位、2の位、1の位となっている場合小数部は0.5の位、0.25の位、0.125の位と続く。 例: 整数ビット群 小ビット0.5 = 1/2 = 00000000 00000000.10000000 00000000 1.25 = 5/4 = 00000000 00000001.01000000 00000000 7.375 = 21/8 = 00000000 00000111.01100000 00000000 ただし、この形式では二進では表せない数が出てくる。例えば、1/5(十進では 0.2)は正確に表すことはできず、最も近い値は以下のようになる。 13107/65536 = 00000000 00000000.00110011 00110011 = 0.1999969... 十進場合 13108/65536 = 00000000 00000000.00110011 00110100 = 0.2000122... 十進場合 これは、増やして正確に表すことはできない。1/3 という数値考えてみよう。これを十進小数で表すと 0.333333... となって永遠に続く。これを適当な止めると、その数値表現は 1/3 を正確に表すことはできていない。 つまり、十進有限小数表せる数が二進有限小数になるとは限らない。これを回避する方法として、小数ではなく分子分母別々に格納した一種分数として内部保持する方式がある。しかし、平方根求めるなどといった演算できないまた、分数同士加減算では通分によって分母表現できないほど大きな値になる可能性があるため、「有理数型」というデータ型として、分母分子ともに多倍長整数で表すことが普通である。

※この「固定小数点数」の解説は、「コンピュータの数値表現」の解説の一部です。
「固定小数点数」を含む「コンピュータの数値表現」の記事については、「コンピュータの数値表現」の概要を参照ください。

ウィキペディア小見出し辞書の「固定小数点数」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「固定小数点数」の関連用語

固定小数点数のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



固定小数点数のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【固定小数点数】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの固定小数点数 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのコンピュータの数値表現 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS