x durch 255 teilen ist recht genau
wobei << bzw >> shift nach links bzw rechts um n bits istCode:x/255 ~ (x + (x << 8)) >> 16 = x / 255.004
um 16 bits zwischendurch wirst du imho nicht rumkommen, aber 8*8=16 ist ja kein drama...
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?
x durch 255 teilen ist recht genau
wobei << bzw >> shift nach links bzw rechts um n bits istCode:x/255 ~ (x + (x << 8)) >> 16 = x / 255.004
um 16 bits zwischendurch wirst du imho nicht rumkommen, aber 8*8=16 ist ja kein drama...
Disclaimer: none. Sue me.
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!
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 ?
Lesezeichen