Die Frage lautet derzeit: "Wir haben 250500 * 250500 = 62.570.250.000."
Nun, das ist kompletter und völliger Unsinn.
250500 * 250500 = 62.570.250.000. (FALSCHE MATHE in der Frage angegeben)
250500 * 250500 = 62.750.250.000. (RIGHT MATH, was bedeutete die Frage wahrscheinlich zu stellen)
Dies warf einige meiner Berechnungen ab. Wenn wir einen Tippfehler annehmen und diesen korrigieren, kann ich diese Antwort für 62.750.250.000 liefern.
Die einfache und unkomplizierte Antwort auf die Frage lautet: Speichern einer kleineren Zahl zusammen mit einer Potenz. Das ist die Antwort, in wenigen Worten zusammengefasst. Diese Antwort erfordert wahrscheinlich eine Erklärung, weshalb ich den Rest dieses Textes zur Verfügung stelle.
25.500 sind 18 Bits.
2 ist ein Bit.
Das erfordert insgesamt 19 Bits. Das sind 32 Bits. Das funktioniert.
Tatsächlich ähnelt diese Art des Denkens der Art und Weise, wie eine x86-CPU (80387 und höher) Gleitkommazahlen verfolgt, wobei einige Bits als Signifikant verwendet werden .
In der Frage wurde nicht angegeben, dass 62.570.250.000 als direkte Nummer gespeichert werden müssen. Das erste, was Sie tun können, ist, eine Quadratwurzel daraus zu ziehen und zu sehen, ob das Ergebnis eine Ganzzahl ist. Das Ergebnis ist eine Ganzzahl, und es steht eine perfekt gültige Lösung zur Verfügung. Diese Lösung ermöglicht die erfolgreiche Speicherung einiger Zahlen mit einer Größe von 549.755.748.352 (das entspricht 8.388.607 * 65.536, auch bekannt als 8.388.607 * (zwei zur 16. Potenz erhoben)). Eine der Zahlen, die dieses System genau darstellen kann, ist
62.750.250.500
, obwohl dasselbe System
62.750.250.499 nicht speichern kann
Das ist jedoch in Ordnung, da für die Frage nicht alle möglichen kleineren Nummern gespeichert werden mussten. Die Frage wollte lediglich einen Weg finden, die Zahl 62.750.250.500 darzustellen. Das ist durchaus machbar.
Die Bits, die Sie speichern, sind also:
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0
Unter Verwendung einer Technik ähnlich der üblichen IEEE-Gleitkomma-Assembly könnten diese Bits folgendermaßen interpretiert werden:
-
eine positive Zahl (erstes Bit)
-
25500 (Bits 10 bis 32)
-
das wird einmal von selbst multipliziert
-
Weil ... "1" der Wert der Bits 2 bis 9 ist.
Beachten Sie, dass die Bits 2 bis 8 und 10 bis 14 führende Nullen sind. Das sind 7 + 5 = 12 Bits, die in diesem Fall nicht sehr effektiv sind. Wenn positive Zahlen angenommen werden, sind dies 13 Bits, die für diesen speziellen Fall möglicherweise ineffektiv / ineffizient sind, sodass die Möglichkeit besteht, dass diese unterschiedlich verwendet werden. (Denken Sie daran, ich sagte früher, wir brauchten 19 der 32 Bits. 13 + 19 = 32.)
Die Idee dabei ist, dass "Ausgabe" nicht als große Zahl gespeichert werden muss, wenn Sie wissen, dass diese Zahl leicht als Zweierpotenz dargestellt werden kann. Der Wert von 62.750.250.000 wird effektiv gespeichert, und die Art und Weise, wie er dargestellt wird, besteht darin, eine kleinere Zahl zusammen mit einer Potenz zu speichern . Im Wesentlichen speichern wir Daten, die es uns in Kombination mit einer bekannten Formel, die wir angegeben haben, ermöglichen, diese bestimmte Nummer zu speichern. (Diese Formel kann möglicherweise nützlich sein, um andere Zahlen zu speichern, wenn häufig quadratische Zahlen verwendet werden.)
Hinweis: Dieses System ist etwas ähnlich, aber NICHT dasselbe wie das Gleitkommasystem von IEEE, das ich in einer auf x86-Assembly fokussierten Universitätsversammlungsklasse besprochen habe. Hier ist ein Hyperlink zu einem Online-Konverter für IEEE-Gleitkommazahlendie Sie für dieses System verwenden könnten. In diesem System geben die Bits für den Exponenten an, welche Zweierpotenz zum Multiplizieren der verbleibenden Bits verwendet wird. Dies passt jedoch nicht in diesen Fall, da 25.500 keine Zweierpotenz ist. Beim Versuch, das Gleitkommasystem von IEEE zu verwenden, konnten wir feststellen, dass 62.750.250.000 geteilt durch 16 3.921.890.625 sind. Wir könnten also die Zahl als 3.921.890.625-mal darstellen (zwei hoch vier). Wir würden immer noch 36-Bit benötigen, was größer ist als die angeforderten 32-Bit (und größer als die 24 Bit, die Intels Coprozessoren zum Speichern der Nicht-Exponenten-Version der Zahl verwenden).
Ich hätte den Teil der Frage, bei dem "Niedrig und Hoch" verwendet wird, möglicherweise weitgehend ignorieren können. Ich war mir nicht ganz sicher, was die Frage ist. Dieses System verwendet jedoch unterschiedliche Bits für unterschiedliche Zwecke, so dass der Exponentenabschnitt der Daten als "höhere" Bits betrachtet werden kann als die anderen Bits, die an einer niedrigeren Position platziert sind. Die Frage "Wie können wir dies darstellen?" Wird direkt mit dem fettgedruckten Satz beantwortet und im weiteren Verlauf dieser Antwort näher erläutert.