4

私はArduinoで高速に実行し、整数のパーセンテージを大まかに概算する必要があるコードを書いています。

たとえば、ある数値の 90%、70%、30% などを見つけたいとします。x * 0.9; または x * 0.3; しかし、速度が必要なので、浮動小数点計算は避けたいです。単純に 2 のべき乗で除算する場合は、ビット単位のシフトを行いますが、整数を使用して 90%、80% などを概算するための同様の手法はありますか?

4

2 に答える 2

4

これらのパーセンテージは、分母が 2 のべき乗である分数で概算できます。

を使用した簡単な例を次に示し2^16ます。

90% = 90 / 100 ~ 58982 / 65536
70% = 70 / 100 ~ 45875 / 65536
30% = 30 / 100 ~ 19661 / 65536

 x% =  x / 100 ~ x * 655 / 65536

除算 (現在は 2 のべき乗) は、シフトを使用して実行できます。

もちろん、これらの分数を生成するには、ある程度の事前計算が必要になる場合があります。

于 2012-01-14T02:21:30.620 に答える
2

ビット シフト ビット シフトと加算のみを使用して、どのように乗算と除算を行うことができますか?

ビット シフトを使用して、arx の例 x = (x*9)/10 を乗算およ​​び除算できます。

コード例については、行き詰まった場合は、いくつかの脳細胞を燃やして解決することができます. ただ聞いてください:)

于 2012-01-15T11:56:30.940 に答える