-         
Ergebnis 1 bis 4 von 4

Thema: Rechentrick

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2006
    Beiträge
    559

    Rechentrick

    Anzeige

    wenn ich drei Register hab, die wert1, wert2 und wert3 heisen und folgendes Verhältnis haben:
    wert1*(wert2/255) = wert3

    wie rechne ich dann am einfachsten wert3 aus?
    wenn ich erst wert2 durch 255 teile, dann kommt ne kommazahl raus und wenn ich erst wert1 mal wert2 nehme, dann kommt ne zahl größer 255 raus.

    Wie löst man das am besten?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    x durch 255 teilen ist recht genau

    Code:
    x/255 ~ (x + (x << 8)) >> 16 = x / 255.004
    wobei << bzw >> shift nach links bzw rechts um n bits ist

    um 16 bits zwischendurch wirst du imho nicht rumkommen, aber 8*8=16 ist ja kein drama...
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    35
    Beiträge
    1.780
    Na ob das Shiften an der Stelle so optimal ist?

    wenn ich mich recht erinnere haben die AVRs keine Barrel-Shifter, das bedeutet daß 8 Takte für den Linksshift und 16 Takte für den Rechtsshift benötigt werden, was meiner Ansicht nach ziemlich viel für eine simple Division ist.
    So viele Treppen und so wenig Zeit!

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Das Shiften um 8 bzw. 16 ist gerade das verschieben um ganze Bytes, also nur ein umsortieren der Register.
    Stellt sich nur die Frage ob wirklich /255 gesucht ist, und nicht etwa /256 ?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •