Bei einem Computer mit einem 64-Bit-Prozessor wäre die größte Zahl, die er verarbeiten kann, 2 64 \= 18,446,744,073,709,551,616. Wie gehen Programmiersprachen, z. B. Java oder C, C++, mit der Arithmetik von Zahlen um, die höher als dieser Wert sind? Jedes Register kann diese Zahlen nicht in einem einzigen Stück speichern. Wie wurde dieses Problem angegangen?
Antworten
Zu viele Anzeigen?Im Allgemeinen beherrscht die Sprache selbst keine hochpräzise, hochgenaue Arithmetik für große Zahlen. Es ist viel wahrscheinlicher, dass ein Bibliothek geschrieben, die alternative numerische Methoden verwendet, um die gewünschten Operationen durchzuführen.
Zum Beispiel (ich denke mir das gerade aus) könnte eine solche Bibliothek die Techniken nachbilden, die Sie verwenden würden, um große Zahlen von Hand zu berechnen. Solche Bibliotheken sind im Allgemeinen viel langsamer als mit der eingebauten Arithmetik, aber gelegentlich ist die zusätzliche Präzision und Genauigkeit erforderlich.
Die meisten Sprachen speichern sie als Array von Ganzzahlen. Wenn Sie zwei dieser großen Zahlen addieren/subtrahieren, addiert/subtrahiert die Bibliothek alle Integer-Elemente im Array separat und behandelt die Überträge/Brüche. Das ist wie manuelle Addition/Subtraktion in der Schule, denn so funktioniert es intern.
Einige Sprachen verwenden echte Textstrings anstelle von Integer-Arrays, was zwar weniger effizient ist, aber einfacher in eine Textdarstellung umgewandelt werden kann.
- See previous answers
- Weitere Antworten anzeigen