Forum: Mikrocontroller und Digitale Elektronik Teilen durch shiften?


von Spice (Gast)


Lesenswert?

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

von Ralf G. (ralg)


Lesenswert?

Blätter' mal ein paar Tage zurück, da wurde das ausführlich 
auseinandergenommen.

von beal (Gast)


Lesenswert?

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

von beal (Gast)


Lesenswert?

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

von rava (Gast)


Lesenswert?

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

von Ralf G. (ralg)


Lesenswert?

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.

von Uwe (Gast)


Lesenswert?

Der Trick mit BCD zu rechnen und einfach um ein Nibble oder mehr Nibble 
zu schieben (bzw. zu kopieren) ist ganz OK.

von Max H. (hartl192)


Lesenswert?

Wenn du in BCD rechnest, kannst du mit zahl>>4 durch 10 Teilen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von m.n. (Gast)


Lesenswert?

Spice schrieb:
> Durch 2, 4, 8 ist klar, aber im
> Dezimalsystem?

Da muß man nur den Dezimalpunkt verschieben.

von Jasch (Gast)


Lesenswert?

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... ;-)

von H.Joachim S. (crazyhorse)


Lesenswert?

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 :-)

von Wolfgang (Gast)


Lesenswert?

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.

von Ralf G. (ralg)


Lesenswert?

Jasch schrieb:
> Du meinst bis 'Neun', sonst versteht das ja erst recht keiner... ;-)

Oh Mist! [ Wenn ich 'zehn' schreibe, meine ich 'neun' ;-) ]

von c.m. (Gast)


Lesenswert?

Ralf G. schrieb:
> ..., ein Bit zu erfinden, welches gefälligst nicht nur bis 'eins',
> sondern bis 'zehn' geht.

MLC's?

von Ralf G. (ralg)


Lesenswert?

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
Noch kein Account? Hier anmelden.