固定小数点数 固定小数点数の概要

固定小数点数

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

演算自体は整数型と同じ方法で行われ、小数点位置は設計者の意図によって決定される。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. ^ ヘンリー・S.ウォーレン、ジュニア 著、滝沢徹、玉井浩、鈴木貢、赤池英夫、葛毅、藤波順久 訳「第10章 整数定数による除算」『ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか』エスアイビー・アクセス、2004年。ISBN 4-434-04668-3 
  2. ^ 通貨型 PostgreSQL 9.2.4文書(2014年2月3日閲覧)。


「固定小数点数」の続きの解説一覧




固有名詞の分類


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

辞書ショートカット

すべての辞書の索引

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

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

   

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



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

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの固定小数点数 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS