Arduino Code

Gast #5403111
Lesenswert?

Es wir der Inhalt von 'wert' um 2 Bit nach rechts verschoben.
Die Auswirkung kommt auf den Datentyp von 'wert' an.
Bei Typen wie uint8_t, unsigned char ... ist es eine Division durch 4.
Vielleicht wird 'wert' hier ja auch bitweise verwendet ? Das können wir 
aber nicht wissen.
Beitrag #5403117 wurde von einem Moderator gelöscht.
Gast #5403128
Lesenswert?

Vielen Dank für die schnelle und kompetente Hilfe.

Die Variable wird immer >= 0 sein.

Warum dividiert man mit einem Rechtsshift und nutzt nicht sofort eine 
Division?

Hat das mit Geschwindigkeit und Aufwand zu tun?

Ich denke eine Division wird im Compiler viel aufwändiger sein, d.h 
langsamer und ressourcenfressend?

Danke
Gast #5403198
Lesenswert?

> Warum dividiert man mit einem Rechtsshift und nutzt nicht sofort
> eine Division?

Weil "man" glaubt, dass die effizienter sei. Jeder mir bekannte Compiler 
erzeugt bei beiden Varianten allerdings exakt den selben Maschinencode 
(nämlich die shift Operation):

wert = wert >>2;
wert = wert / 4;
#5403216
Lesenswert?

Stefanus F. schrieb:
>> Warum dividiert man mit einem Rechtsshift und nutzt nicht sofort
>> eine Division?
>
> Weil "man" glaubt, dass die effizienter sei. Jeder mir bekannte Compiler
> erzeugt bei beiden Varianten allerdings exakt den selben Maschinencode
> (nämlich die shift Operation):
>
> wert = wert >>2;
> wert = wert / 4;

nicht exakt das gleiche, weil (im 2-er Komplement):

-10 >> 2 == -3
-10 / 4  == -2

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren