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