Gast
#5403100
Hallo, was tut folgender Arduino Code? wert = wert >>2; Danke.
|
Anzeige
|
Arduino Code
Gast
#5403100
Hallo, was tut folgender Arduino Code? wert = wert >>2; Danke.
Gast
#5403107
Das kommt auf den Typ deiner Variablen wert an.
Gast
#5403111
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.
Gast
#5403112
Rechts-Shift um 2 Bits
Gast
#5403113
int Wert = 0;
Gast
#5403115
IDLER schrieb: > int Wert = 0; Dann bewirkt die Code-Zeile für positive Zahlen eine Division durch 4. Für negative müsstest du dich mal mit der Zweierkomplementdarstellung befassen.
Beitrag #5403117 wurde von einem Moderator gelöscht.
Gast
#5403125
Wolfgang schrieb: > IDLER schrieb: >> int Wert = 0; > > Dann bewirkt die Code-Zeile für positive Zahlen eine Division durch 4. > Wenn Wert=0 ist, dann bewirkt ein Rechtsshift gar nichts. Danach ist Wert immer noch Null.
Gast
#5403128
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
#5403139
Hi
>Die Variable wird immer >= 0 sein.
Die kann auch negativ sein.
MfG Spess
Gast
#5403149
spess53 schrieb: > Die kann auch negativ sein. Du kennst seinen Code? IDLER schrieb: > Warum dividiert man mit einem Rechtsshift und nutzt nicht sofort eine > Division? Eine Shift-Operation ist mit einem Assemblerbefehl gemacht, echte Divisionen dauern je nach Prozessor deutlich länger. Allerdings kann man mit dieser Shift-Operationen nur durch Zweierpotenzen dividieren.
Gast
#5403174
Danke, auch an Spess53 der meinen Code kennt und wohl beim NSA arbeitet??
Gast
#5403183
npn schrieb: > Du kennst seinen Code? Nö, er kennt INT Aii, bei unsigned int könnts nur positiv sein. Da er int benutzt könnts auch in den negativen Zahlenbereich. KÖNNTE. Aber da wir den Code nicht kennen, wissen wir es natürlich nicht.
Gast
#5403198
> 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; 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
Gast
#5403226
Ich meine natürlich unsigned Integer. Kein normaler Mensch benutzt shift Operationen mit signed Integer. Obwohl ... Akademikern traue ich alles zu. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|