Dezimalstellen einer beliebig langen Binärzahl

Hier kann man seine Meinungen zum Forum und andere Neuigkeiten mitteilen

Dezimalstellen einer beliebig langen Binärzahl

Beitragvon Nicht von Bedeutung » Sa 11. Nov 2017, 12:24

Hallo

Es ist anscheinend schon zu lange her, dass ich mich damit befasst habe... Es geht darum, die Anzahl der Stellen zu berechnen, die eine Binärzahl für eine Dezimaldarstellung benötigt.
Die Anzahl der Dezimalstellen bekommt man ja normalerweise über , wobei x der Wert der Binärzahl ist, womit sich das Ganze auch zerlegt darstellen lässt: . Ich meine mich daran erinnern zu können, dass es etwas gab, womit man sich für jedes gesetzte Bit sparen kann, weil die Werte recht hoch werden können und man nur noch etwas mit gesetzten s machen musste (irgendwas mit Reihe oder Bitschiebereien?) was man anschließend mit multiplizieren oder dividieren musste um auf zu kommen.
Leider weiß ich grad nicht mal mehr, ob ich da was verwechsele oder nicht. Weiß jemand, worauf ich hinaus will und wovon ich schreibe und kann mir evtl. auf die Sprünge helfen?
Nicht von Bedeutung
 

Re: Dezimalstellen einer beliebig langen Binärzahl

Beitragvon Yukterez » Mo 13. Nov 2017, 00:09

Wenn ich's manuell machen müsste würde ich es so tun wie bei In[3]:

Bild

Als Beispiel die Zahl 23, das ergibt dann 1·2⁴+0·2³+1·2²+1·2¹+1·2⁰, also in binär 10111 (siehe auch die Probe bei In[12]). Wenn die Dezimalzahl besonders lang ist geht es nach dem gleichen Muster weiter, nur dass man dann eben statt den 4 B's noch mehr B's braucht. Wenn man mehr B's hinschreibt als zur Darstellung der Zahl benötigt werden kommt wegen 2^-∞=0 ab 0 Rest bei den überflüssigen B's ein minus unendlich heraus (wie bei B5 da oben), das streicht man dann am Ende wieder weg.

Vorrechnend,

Bild
Yukterez
 
Beiträge: 10125
Registriert: So 8. Apr 2012, 19:55

Re: Dezimalstellen einer beliebig langen Binärzahl

Beitragvon Nicht von Bedeutung » Mo 13. Nov 2017, 01:04

Hallo Yukterez

Genau darum geht es, die Bs werden zu hoch. Allerdings nicht die der Dezimalzahlen, sondern die der Dualzahlen. Wenn ich nun rechne, wobei n die Bitstelle ist, bekomme ich - also alles ganz ohne dieses . Wenn ich aber Ersteres für einzelne gesetzte Bitstellen einfach aufsummiere, bekomme ich aber nicht den Logarhitmus zur Basis 10 der Binärzahl. Beim Aufsummieren muss also etwas mit den Termen - vor allem bei dem an Bitstelle 0 - passieren, ich weiß nur nicht was (bzw. nicht mehr was, oder ob ich was durcheinander bringe).
Nicht von Bedeutung
 

Re: Dezimalstellen einer beliebig langen Binärzahl

Beitragvon Yukterez » Mo 13. Nov 2017, 10:32

Man kann ja eine Funktion d2b(n) schreiben, wobei n der Input als Dezimalzahl ist und ausgegeben werden die Stellen der Binärzahl die gleich 1 gesetzt werden. Die 2er-Potenzen die im Ergebnis nicht vorkommen sind dann die 0er. Mit weniger Rechenschritten als man insgesamt Bits zur Darstellung der Zahl benötigt geht es dabei zwar nicht, aber zumindest hat man so eine Funktion für beliebig hohe Zahlen die man trotzdem in wenigen Zeilen ausschreiben kann:

Bild

Vielleicht geht das auch kürzer, auf Youtube bin ich schon über einige Videos gestolpert die ganz vernünftig aussehen, eines davon hatten wir kürzlich eh auch irgendwo aber bis jetzt hat mich eher nur ganz allgemein interessiert so dass ich mich da nicht vertieft hab. Man könnte eventuell ergoogeln welche Methode die eingebaute BaseForm[n, base]-Funktion verwendet, die ist dann wahrscheinlich noch eleganter als meine.

Zusammenbastelnd,

Bild
Yukterez
 
Beiträge: 10125
Registriert: So 8. Apr 2012, 19:55

Re: Dezimalstellen einer beliebig langen Binärzahl

Beitragvon Nicht von Bedeutung » Mo 13. Nov 2017, 14:18

Yukterez hat geschrieben:Man könnte eventuell ergoogeln welche Methode die eingebaute BaseForm[n, base]-Funktion verwendet, die ist dann wahrscheinlich noch eleganter als meine.
Das wäre eine gute Idee, wenn da nicht der Umstand wäre, das dort genau das verwendet wird, was hier gesucht ist - und nicht . Der entscheidende Teil findet heutzutage in einer FPU statt, wo über Bitschiebereien und Reihenentwicklungen berechnet werden und abschließender Multiplikation mit , ohne den Wert einer Zahl (welche grundsätzlich im Binärformat vorliegen) zu kennen oder ermitteln zu müssen, weil ohnehin nicht genug Register dazu da wären. Das ist wohl auch der Grund dafür, warum ich darüber nichts mehr finde aber immerhin ein Indiz dafür, dass mich mein Erinnerungsvermögen nicht trügt. Vllt. kommt der Rest ja auch noch wieder, wer weiß.
Nicht von Bedeutung
 

Re: Dezimalstellen einer beliebig langen Binärzahl

Beitragvon Nicht von Bedeutung » Sa 18. Nov 2017, 16:49

Hahahaaa... Ich beiß in die Tastatur. Ich suche ja gar nicht sondern zunächst erstmal , also eine Zahl, die geringfügig über der Anzahl der Bitstellen, die von x benötigt werden, liegt. Das ist dann die, die mit multipliziert werden muss um an zu kommen.
Nicht von Bedeutung
 


Zurück zu Allgemeines

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste