www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Gcc + AVR -> Schnelleres Teilen mit z.B. 32/64 als mit 33/65 ?


Autor: Jens M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei machen Code-Beispielen für den AVR sehe ich das mache versuchen
immter durch 2er Potenzen zu teilen (falls möglich).

Bsp.
 int a;
 //....
 a /= 32; // Verkleinern

und nicht 'gerade' Werte
 int a;
 //....
 a /= 30; // Verkleinern

Ist die Division mit 2er Potenzen allgemein schneller,
irgendwie anders vorteilhafter?

Danke
Jens

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens M. schrieb:

> Ist die Division mit 2er Potenzen allgemein schneller,
> irgendwie anders vorteilhafter?

Du bist das 10-er System gewohnt.
Dein Rechner arbeitet aber im 2-er System

So wie du einfach durch 10 dividieren kannst, indem du einfach die 
letzte Stelle unter den Tisch fallen lässt und alles andere eine Stelle 
nach rechts rückst, so kann ein Rechner einfach durch 2 dividieren, 
indem er die letzte Stelle unter den Tisch fallen lässt und alles andere 
eine Stelle nach rechts rückt.

Was für dich im 10er System die Reihe 10, 100, 1000, 10000, ... ist
(durch die man alle einfach dividieren kann), ist für einen Computer die 
Reihe 1, 2, 4, 8, 16, 32, 64, ...

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
für dich ist "durch 10 teilen" doch auch um einiges einfacher als durch 
11, 7.

im Basis-10 Zahlensystem ist das teilen durch 10er-Potenzen sehr 
einfach, da man nur das komma verschieben muss.

genauso ist es für CPUs mit ihrem Basis-2 Zahlensystem.

Autor: Albert ... (albert-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man durch 2er Potenzen teilt kann der Controller dies durch 
einfaches Bit-shiften erledigen. Bei den anderen Sachen muss dies durch 
einen Software Algorithmus gelöst werden wenn nicht gerade eine Hardware 
Divisions Einheit vorhanden ist.

Autor: Jens M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
super, ok, vielen Dank.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.