Zahlensystem Umwandlung, Anzahl benötigter Ziffern

Hallo,

ich habe folgendes kleines mathematisches Problem. Und zwar soll eine ganzzahlige Dezimalzahl in ein anderes Zahlensystem umgewandelt werden, wobei das Zielsystem beliebig ist (insbesondere binär, oktal, hexadezimal )

Bekannt ist lediglich wie groß die Dezimalzahl ist.

Nun ist die Frage wieviele Ziffern im neuen Zielsystem benötigt werden um diese Dezimalzahl darzustellen.

Beispiel: 10 (dez) -> binär? Es werden 4 Stellen benötigt da 1010 (bin) der 10 (dez) entspricht.

Gibt es da einen einfachen und effizienten Weg die Anzahl der benötigten Stellen zu berechnen?

Ciao
Andreas

Hallo,
vergleiche die zu wandelnde Zahl X mit der niedrigsten Wertigkeit einer einzelnen Stelle Yn im anderen System. Du brauchst genau eine Stelle weniger, als die Position von Yn angibt.

Dein Beispiel 10:

vergleiche 10 mit 1(1), 10(2), 100(4), 1000(8), 10000(16),… im binären System. 10000(16) ist größer als Deine 10 und hat 5 Stellen, also brauchst Du vier Stellen.

vergleiche 10 mit 1, 10, 100, 1000, 10000,… im oktalen System
etc.

Wie Dir vielleicht aufgefallen ist, ist Yn jeweils eine Potenz von…

Gruß
loderunner

Die Anzahl der Ziffern, die zur Darstellung einer Zahl X bezüglich eines Y’er-Zahlensystems benötigt werden, ist einfach der Logarithmus von X zur Basis Y (aufgerundet).

Grüße,

Ptee

Und zwar soll eine ganzzahlige Dezimalzahl in ein anderes
Zahlensystem umgewandelt werden, wobei das Zielsystem beliebig ist

Bekannt ist lediglich wie groß die Dezimalzahl ist.

Nun ist die Frage wieviele Ziffern im neuen Zielsystem
benötigt werden um diese Dezimalzahl darzustellen.

Hallo Andreas,

die Zahl n hat im Ber-System (B = Basis des Systems) genau int(1 + ln(n) / ln(B)) Ziffern, wobei die Funktion „int“ für die Abrundung auf die nächstkleinere Ganzzahl steht, und „ln“ den natürlichen Logarithmus bezeichnet.

Beispiel: 10 (dez) -> binär? Es werden 4 Stellen benötigt
da 1010 (bin) der 10 (dez) entspricht.

n = 10, B = 2 ==> Die Dualdarstellung von 10 hat int(1 + ln(10) / ln(2)) = int(4.321928…) = 4 Ziffern.

Von der Richtigkeit der Formel kann man sich auch überzeugen, indem man sie für B = 10 anwendet: 999999 hat int(1 + ln(999999) / ln(10)) = int(6.999999566…) = 6 Ziffern, wohingegen 1000000 (= eine Million) die kleinste Zahl ist, die int(1 + ln(1000000) / ln(10)) = int(7) = 7 Ziffern hat.

Mit freundlichem Gruß
Martin

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

Die Anzahl der Ziffern, die zur Darstellung einer Zahl X
bezüglich eines Y’er-Zahlensystems benötigt werden, ist
einfach der Logarithmus von X zur Basis Y (aufgerundet).

Dieser Darstellung haftet eine klitzekleine Unschönheit an: Man muss sogar auf die nächstgrößere ganze Zahl „aufrunden“, wenn man beim Logarithmieren genau eine ganze Zahl erhält.

Gruß
Martin

Die Anzahl der Ziffern, die zur Darstellung einer Zahl X
bezüglich eines Y’er-Zahlensystems benötigt werden, ist
einfach der Logarithmus von X zur Basis Y (aufgerundet).

Dieser Darstellung haftet eine klitzekleine Unschönheit an:
Man muss sogar auf die nächstgrößere ganze Zahl „aufrunden“,
wenn man beim Logarithmieren genau eine ganze Zahl
erhält.

Stimmt, int( log_Y (X) )+1 ist besser.