Arduino Code

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.
Beitrag #5403117 wurde von einem Moderator gelöscht.
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
(Firma: www.wolfgangrobel.de) #5403159
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 #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;
#5403216
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 schreiben

Eine eigene Frage? Dieser Thread ist über 8 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.