Rechnen
Rechnen
Ist es möglich in einer long Variable die ausgerechnete Zahl "16000000 hoch 786432" zu schreiben?
Wenn neun wie kann ich die Zahl ausrechen und auf dem Bildschirm wiedergeben?
Wenn neun wie kann ich die Zahl ausrechen und auf dem Bildschirm wiedergeben?
Die Zahl ist für Longs zu groß. Selbst der Windows-Taschenrechner streikt dabei.
var.f = 1.#INF00
unendlich!
Wozu brauchst du so eine große Zahl?
Code: Alles auswählen
var.f = Pow(16000000, 786432)
Debug var.f

Wozu brauchst du so eine große Zahl?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
Dir ist klar, dass allein 16.000.000^999 schon mehr als 7196 Stellen hat?
Deine Rechnung würde diese Zahl noch um ein vielfaches an Stellen erweitern. Wozu benötigst du bitte eine Zahl welche man nicht einmal ansatzweise aussprechen könnte?
PureBasic-Long-Variablen (Vorzeichenbehaftet, also praktisch 31 bit) fassen maximal den Wert von 2^31. Es sollte einsichtig sein, dass die somit maximalen 10 Stellen nicht einmal im Ansatz fähig wären, die 7196 Stellen einer 16.000.000^999 Rechnung zu fassen.
Deine Rechnung würde diese Zahl noch um ein vielfaches an Stellen erweitern. Wozu benötigst du bitte eine Zahl welche man nicht einmal ansatzweise aussprechen könnte?
PureBasic-Long-Variablen (Vorzeichenbehaftet, also praktisch 31 bit) fassen maximal den Wert von 2^31. Es sollte einsichtig sein, dass die somit maximalen 10 Stellen nicht einmal im Ansatz fähig wären, die 7196 Stellen einer 16.000.000^999 Rechnung zu fassen.

- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
Da 10^7 < 16000000 < 10^8 hat diese Zahl wegen (10^7)^786432 = 10^5505024 < (10^8 )^765432 = 10^6291456 also irgendwas zwischen 5505024 und 6291456 Stellen.
Man kann mit z.B. Java zwar solch riesige Zahlen berechnen, jedoch dauert das dermaßen lange, dass es Sinn macht, zuvor etwas Gehirnschmalz zu investieren, um die Berechnung abzukürzen:
Die Berechnung läßt sich etwas vereinfachen:
a) Wegen 16000000 = 16*10^6 läßt sich der zu berechnende Wert auseinanderziehen zu 16^786432 * (10^6)^786432 = 16^786432 * 10^4718592.
=> Die gesuchte Zahl ist also in Dezimaldarstellung 16^786432 gefolgt von genau 4718592 Nullen. Letztere braucht man also während der Berechnung nicht zu beachten, da sie zudem nur extrem viel Rechenzeit ziehen.
b) Da aber selbst die Berechnung von 16^786432 noch lange dauert, vereinfachen wir noch weiter:
Wegen 16 = 2^4 ist somit 16^786432 = 2^3145728.
Binär dargestellt ist 16^786432 also eine 1 gefolgt von 3145728 Nullen.
Somit läßt sich 16^786432 erzeugen durch eine 1, welche um 3145728 Stellen nach links geshiftet wird. Das Shiften geht nahezu ohne Zeitaufwand.
Insgesamt liefert somit folgendes Java-Programm die gesuchte Zahl ohne die folgenden Nullen:
Das Wandeln der Zahl in einen Dezimalzahl-String dauerte dabei etwa 15 Minuten und liefert folgende Zahl:
MegaZahl.txt (947kB)
... mit 946959 Stellen, an welche nun noch 4718592 Nullen angehängt werden müssen. Insgesamt hat die Zahl also 5665551 Stellen.
Für das Rechnen mit beliebig großen Zahlen gibt es glaube ich auch für PB eine Lib? Schau dafür mal auf Purearea.
Man kann mit z.B. Java zwar solch riesige Zahlen berechnen, jedoch dauert das dermaßen lange, dass es Sinn macht, zuvor etwas Gehirnschmalz zu investieren, um die Berechnung abzukürzen:
Die Berechnung läßt sich etwas vereinfachen:
a) Wegen 16000000 = 16*10^6 läßt sich der zu berechnende Wert auseinanderziehen zu 16^786432 * (10^6)^786432 = 16^786432 * 10^4718592.
=> Die gesuchte Zahl ist also in Dezimaldarstellung 16^786432 gefolgt von genau 4718592 Nullen. Letztere braucht man also während der Berechnung nicht zu beachten, da sie zudem nur extrem viel Rechenzeit ziehen.
b) Da aber selbst die Berechnung von 16^786432 noch lange dauert, vereinfachen wir noch weiter:
Wegen 16 = 2^4 ist somit 16^786432 = 2^3145728.
Binär dargestellt ist 16^786432 also eine 1 gefolgt von 3145728 Nullen.
Somit läßt sich 16^786432 erzeugen durch eine 1, welche um 3145728 Stellen nach links geshiftet wird. Das Shiften geht nahezu ohne Zeitaufwand.
Insgesamt liefert somit folgendes Java-Programm die gesuchte Zahl ohne die folgenden Nullen:
Code: Alles auswählen
import java.math.*;
import java.io.*;
public class MegaZahl {
public static void main (String [] args) throws IOException
{
BigInteger x = BigInteger.valueOf(1);
x = x.shiftLeft(3145728);
System.out.println("value calculated. Write decimal value to file.");
FileWriter f = new FileWriter(new File("C:\\MegaZahl.txt"));
f.write(x.toString());
System.out.println("value written to file. End");
f.close();
}
}
MegaZahl.txt (947kB)
... mit 946959 Stellen, an welche nun noch 4718592 Nullen angehängt werden müssen. Insgesamt hat die Zahl also 5665551 Stellen.
Für das Rechnen mit beliebig großen Zahlen gibt es glaube ich auch für PB eine Lib? Schau dafür mal auf Purearea.
!UD2
Danke für die Antworten die Zahl müsste übrigens meiner überlegung nach die mögliche Anzahl an verschiedenen Bildern sein die ein Bildschirm mit der Auflösung von 1024x768 und 16000000 Farben darstellen kann. Somit wäre dann jede DVD und alles andere was es je geben würde schon auf dem PC gespeichert und man müsste von nun an nur noch die Bilder hintereinander aufrufen^^ 

- Froggerprogger
- Badmin
- Beiträge: 855
- Registriert: 08.09.2004 20:02
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
lol rofl
beachte bitte, daß >90% der möglichen bilder chaotischer farb-müll ist...
... erstell doch gleich ein 26-dimensionales Array mit 256-bit indices...
darin kannst du das gesamte unversum speichern
edit:
hab froggers post grad erst gelesen...
meins war davon unabhängig...
beachte bitte, daß >90% der möglichen bilder chaotischer farb-müll ist...
... erstell doch gleich ein 26-dimensionales Array mit 256-bit indices...
darin kannst du das gesamte unversum speichern

edit:
hab froggers post grad erst gelesen...
meins war davon unabhängig...
Zuletzt geändert von Kaeru Gaman am 05.04.2005 21:04, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Ich glaube du hast da was falsch verstanden 10^87 Atome wäre ein bischen wenig.Froggerprogger hat geschrieben:Ich hab mal gehört, dass Forscher in etwa von pi mal Daumen 10^87 Atomen im Universum ausgehen.

kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping

- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
Also mir erscheint ein 1 mit 87 Nullen als ausreichend groß um das glauben zu könne. Aber wenn du meinstzigapeda hat geschrieben:Ich glaube du hast da was falsch verstanden 10^87 Atome wäre ein bischen wenig.Froggerprogger hat geschrieben:Ich hab mal gehört, dass Forscher in etwa von pi mal Daumen 10^87 Atomen im Universum ausgehen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22