このブログをオープンして、意外とアクセスが多いのは「固定小数点」のキーワードだ。
みんな悩んでいるんだ!
ポイントは、16ビットなり32ビットのどこのビットの間に論理的な(頭で考えた)小数点を置くかということだ。
物理的な2進法の数値をそのまま扱うのか。つまり、1倍して考えるのか、1/2倍して考えるのか、あるいは、1/65536倍して考えるのか、の違いだけである。
その前に、どのような範囲の数値入力を扱いたいか?
その入力にどのような係数をかけたいか?
整理しておくことが必要だ。
全て整数でやりたいということになると、小数点は、右端になる。
次に小数。
例えば、0.03456をどのように掛けるのか?ということが問題になると思う。
65536倍して、
$ 0.03456 * 65536 = 2264.9 $
2265に近似して、2265を掛けて、後段のどこかで和をとった後1/65536すれば良い。
全ての変数、係数の絶対値を1未満にする必要はない。
見た目(物理)のビット長制限を以下に考え(論理)で解決するのか、
という話だ。
ヒントになっただろうか?
しっかり勉強したい方は、本を読むこと。
モータ制御のための固定小数点演算
この本は、1997年に買った。安いDSPスタータキットが発売されて、パソコンがあれば、DSPプログラミングができるようになった。本とDSPスタータキットを買って、DSP遊び…
遠回りするようだけど、基礎がしっかりとしていると、後でいろいろアイディアが浮かんできます。
それと、他人と議論することも、ヒントが出てくるのでお勧め。