モータ制御のための固定小数点演算(2)

このブログをオープンして、意外とアクセスが多いのは「固定小数点」のキーワードだ。
みんな悩んでいるんだ!

ポイントは、16ビットなり32ビットのどこのビットの間に論理的な(頭で考えた)小数点を置くかということだ。
物理的な2進法の数値をそのまま扱うのか。つまり、1倍して考えるのか、1/2倍して考えるのか、あるいは、1/65536倍して考えるのか、の違いだけである。

その前に、どのような範囲の数値入力を扱いたいか?
その入力にどのような係数をかけたいか?
整理しておくことが必要だ。
全て整数でやりたいということになると、小数点は、右端になる。

次に小数。
例えば、0.03456をどのように掛けるのか?ということが問題になると思う。
65536倍して、

$ 0.03456 * 65536 = 2264.9 $

2265に近似して、2265を掛けて、後段のどこかで和をとった後1/65536すれば良い。
全ての変数、係数の絶対値を1未満にする必要はない。

見た目(物理)のビット長制限を以下に考え(論理)で解決するのか、
という話だ。

ヒントになっただろうか?

しっかり勉強したい方は、本を読むこと。

遠回りするようだけど、基礎がしっかりとしていると、後でいろいろアイディアが浮かんできます。

それと、他人と議論することも、ヒントが出てくるのでお勧め。