Hi Zusammen, durch Schiebeoperationen geschickt dividieren, wie funktioniert das? Angnenommen, ich möchte 63100 durch 10 oder 100 teilen, geht sowas überhaupt nur durch bitschieberei? Durch 2, 4, 8 ist klar, aber im Dezimalsystem? Danke und Gruß Spice
Blätter' mal ein paar Tage zurück, da wurde das ausführlich auseinandergenommen.
wenn du zahlen zur BASIS 2, also dual- oder binärsystem, um eine stelle nach rechts verschiebst teilst du durch zwei. schiebst du sie nach links multiplizierst du mit zwei. du kannst also nur * oder / (2*2*2*2...) =>2^n rechnen. das ist das selbe wie wenn du zahlen zur BASIS 10 (dezimalsystem) nach rechts oder links schiebst nur das du dann * oder / 10^n rechnest. angenommen du hast die dezimalzahl 42: 0042(dez)<<1 = 0420(dec) also mal 10
ein µC kann natürlich nur die zahlen welcher er verarbeiten kann (dual) shiften also kannst du mit dieser art auch nur * oder / 2^n rechnen
wenn man sich ansieht, wie oft diese Frage hier auftritt frag ich mich, wie lange es wohl noch dauert, bis sich jemand erbarmt und eine Bib für BCD-Arithmetik schreibt :D
rava schrieb: > wenn man sich ansieht, wie oft diese Frage hier auftritt frag ich mich, > wie lange es wohl noch dauert, bis sich jemand erbarmt ..., ein Bit zu erfinden, welches gefälligst nicht nur bis 'eins', sondern bis 'zehn' geht.
Der Trick mit BCD zu rechnen und einfach um ein Nibble oder mehr Nibble zu schieben (bzw. zu kopieren) ist ganz OK.
rava schrieb: > wenn man sich ansieht, wie oft diese Frage hier auftritt frag ich mich, > wie lange es wohl noch dauert, bis sich jemand erbarmt und eine Bib für > BCD-Arithmetik schreibt :D Ist schon längst passiert: Siehe Appnote AVR204 von Atmel.
Spice schrieb: > Durch 2, 4, 8 ist klar, aber im > Dezimalsystem? Da muß man nur den Dezimalpunkt verschieben.
Ralf G. schrieb: > rava schrieb: >> wenn man sich ansieht, wie oft diese Frage hier auftritt frag ich mich, >> wie lange es wohl noch dauert, bis sich jemand erbarmt > > ..., ein Bit zu erfinden, welches gefälligst nicht nur bis 'eins', > sondern bis 'zehn' geht. Du meinst bis 'Neun', sonst versteht das ja erst recht keiner... ;-)
Hm, komisch - im Dezimalsystem erwartet keiner ernsthaft, dass man durch beliebige andere Zahlen als 10^x einfachst teilen kann. Vom Dualsystem wird das immer wieder mal verlangt :-)
Spice schrieb: > Angnenommen, ich möchte 63100 durch 10 oder 100 teilen, geht sowas > überhaupt nur durch bitschieberei? Klar, schreibst deine Zahl als Bruch hin. Dann erweiterst und zerlegst du ihn in mehrere Summand, so dass im Nenner jeweils eine Potenz von 2 steht.
Jasch schrieb: > Du meinst bis 'Neun', sonst versteht das ja erst recht keiner... ;-) Oh Mist! [ Wenn ich 'zehn' schreibe, meine ich 'neun' ;-) ]
Ralf G. schrieb: > ..., ein Bit zu erfinden, welches gefälligst nicht nur bis 'eins', > sondern bis 'zehn' geht. MLC's?
Wolfgang schrieb: > Klar, schreibst deine Zahl als Bruch hin. Beitrag "Re: effiziente Division durch 10"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.