float ersetzen

Gast #4341466
Hallo,

ich versuche einen Wert mit 256 auf 124 LEDs zu mappen. D.h. Der erste 
muss 0 sein der letzte 255

Das hier tut genau das was es soll:
1
float Hfloat = 0;
2
for (...)
3
{
4
  Hfloat = Hfloat + 256.0/124.0;
5
  H = (int)round(Hfloat);
6
  ...
7
}

Kann ich mir den float irgendwie sparen, oder gibt es etwas 
sparsammeres?

Vielen Dank!
Gast #4341519
Manchmal ist es Sinnvoll, solche Werte-Pärchen extern (z.B. mit Excel) 
vorzuberechnen und als Array abzulegen. Die Berechnung reduziert sich 
dann auf:

H=meinArray[Hfixed];
Gast #4341953
Bin ich für diesen abgekürzten Neusprech zu blöd?

Willst du (A) 1...124 nach 0...255 konvertieren,
oder (B) von  0...255 nach 1...124 konvertieren?

Für beides kann man ohne Einsatz der float-, oder
double-Rechnung recht effektive Lösungen angeben.

Allerdings wird je eine Integer Multiplikation
(Unsigned 8 Bit * 8 Bit) benötigt:

(A)
1...124    -1    -> 0...123
0...123    << 1  -> 0...246
0...246    * 133 -> 0...32718
0...32718  >> 7  -> 0...255

(B))
0...255    *124  -> 0...31620
0...31620  >> 8  -> 0...123
0...123    +1    -> 1...124

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.