• ベストアンサー

マイコンでの小数点の計算

現在,マイコンを使用してセンサの値をAD変換して取り込むプログラムを作成しています. AD変換は8bitの分解能で0~255の値が取得できます. その値を0~100に置き換えたい, 例えば   センサの値が0なら0           128なら50   255なら100 上記のようなことを実現するためにはどのようなプログラムを書けばよいでしょうか? 宜しくお願い致します.

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

・100かけて255で割る。 ・0~255それぞれに対応する値を先に計算しておいて参照する。

con014057
質問者

お礼

早速のご回答ありがとうございます. >>・100かけて255で割る。 この時,小数点以下の数値はどうなるのでしょうか? 例えば233 * 100 / 255 = 91.3725...

その他の回答 (3)

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>この時,小数点以下の数値はどうなるのでしょうか? #2の方のいわれてる通り、必要であれば残せばいいです。 どうやって残せばいいのかは固定小数点や浮動小数点などを調べてみてください。

  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.3

BIT 7=1 50.0000 100/2 BIT 6=1 25.0000 100/4 BIT 5=1 12.5000 100/8 BIT 4=1 06.2500 100/16 BIT 3=1 03.1250 100/32 BIT 2=1 01.5625 100/64 BIT 1=1 00.7813 100/128 BIT 0=1 00.3906 100/256 をBCD加算すれば近似値が求められると思います、但し0xFF -> 100 にはならないので修正が必要です (0-255) 256 -> (0-100) 101 なので、101/X データを加算し小数点以下を丸めた方がいいかも知れません。

con014057
質問者

お礼

ご回答ありがとうございます. BCD加算で近似値を求める方法もあるのですね. 勉強になりました.

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

> この時,小数点以下の数値はどうなるのでしょうか? あなたが小数点以下の数値を必要としているなら残せば良いし、 必要ないなら切り捨てれば良いです。

con014057
質問者

お礼

ご回答ありがとうございます. intに代入すれば勝手に切り捨てられるんですね.

関連するQ&A