Gibt es da einen einfachen und effizienten Weg die Anzahl der
benötigten Stellen zu berechnen?
Hallo Andreas,
ja, gibt es. Um zunächst mal Dein Beispiel zur Umwandlung der Dezimalzahl 10 ins Binärsystem aufzugreifen:
Man entscheidet sich entweder für den Logarithmus zur Basis 10 oder auch für den natürlichen Logarithmus, das ist egal, berechnet dann den Logarithmus von 10 und dividiert selbigen durch den Logarithmus von 2. Als Ergebnis kommt 3,321928095 raus.
2^3,32192805 ist also 10. Im Binärsystem nun also beginnt die Darstellung der Dezimalzahl 10 mit 1*2^3, und da sich die Darstellung bis hinten hin bis zu y*2^0 fortsetzt, egal ob y nun 1 oder 0 ist, brauchst Du von der 3,32192805 nun nur noch die Nachkommastellen abzuschneiden und 1 dazuzuaddieren. Die Funktion Integer (Int) schneidet die Nachkommastellen ab, sodaß die von Dir gesuchte Formel dann so aussieht:
Int(log10 / log2) + 1
Das ist schon alles. Untersuchen wir nun mal ein anderes Beispiel, nämlich die Umwandlung der Dezimalzahl 15 in die dazugehörige Binärzahl, dann ergibt sich laut der obigen Formel:
Int(log15 / log2) + 1, oder in Zahlen, (mit Anwendung des natürlichen Logarithmus):
Int(2,708050201 / 0,693147181) + 1 = 4
Die Binärzal zur dekadischen Zahl 15 lautet 1111, hat also 4 Stellen.
Mit der 16 als dekadischer Ausgangszahl erhält man nach obiger Formel als Lösung exakt die 5, denn die 16 stellt sich ja im Binärsystem als 10000 dar.
Die obige Formel funktioniert auch mit anderen Stellensystemen, nehmen wir mal das Oktalsystem und beschäftigen uns mit der Dezimalzahl 1234567, dann ergibt sich:
Int(log1234567 / log8) + 1 = 7
1234567 stellt sich im Oktalsystem als 4553207 dar und hat genau 7 Stellen.
Gruß Rüdiger