Das Gewicht von 2^64 Reisskörner
-
Bitte um Kommentare, long float? long long (negativ), danke.
// https://de.wikipedia.org/wiki/Tausendkornmasse #include <cmath> #include <iomanip> #include <iostream> #include <numbers> using namespace std; int main() { long long schach = 1; for (int i = 1; i <= 64; i++) schach *= 2; cout << "Anzahl am Feld 64: " << schach << endl; long float schachFloat = pow(2, 64); cout << "pow(2, 64): " << setprecision(20) << schachFloat << endl; cout << "die Masse: " << schachFloat * 15 / 1000000000 << " Tonnen" << endl; }
-
Es ist vieleicht blöd, aber als COBOL Programmierer bewundere ich diese Prezision.
-
@odalv Du hast 1 Reiskorn zuviel.
-
@DirkB danke, der Erste
-
ich hab' die Antwort! Schwer!
-
@DirkB sagte in Das Gewicht von 2^64 Reisskörner:
Du hast 1 Reiskorn zuviel.
Wirklich?
pow(2, 64) == pow(2, 64) - 1 (bool) true // whoops...
Ich würde das ja so lösen (ohne zu rechnen, C++ hat den Wert doch schon fest eingebaut...):
auto n_reiskoerner = std::numeric_limits<uint64_t>::max();
-
@wob danke wob(Schah=? Iran)
-
@wob sagte in Das Gewicht von 2^64 Reisskörner:
Wirklich?
pow(2, 64) == pow(2, 64) - 1
(bool) true // whoops...Computer eben. (Der Mathematiker ist not amused.)
-
@odalv
Verstehst du warum da eine -1 fehlt?Wir vermuten ja du möchtest das Problem von Sissa ibn Dahir lösen.
Ein Schachbrett besteht aus 8x8 also 64 Feldern. Auf dem ersten Feld liegt ein Reiskorn, auf dem zweiten 2 = 2^1, auf dem dritten 4 = 2^2, auf dem vierten 8 = 2^3,...
Die Summe aller Reiskörner ist also
Sum = 2^0 + 2^1 + 2^2 + 2^3 + .... + 2^63
Das Ganze interpretiert man nun als Binärzahl. Da steht also
Sum = 1111111111111111111111111111111111111111111111111111111111111111b
Dies entspricht übrigens dem maximalen Wert von
uint64_t
.Und nun addiert man eine 1. Daraus folgt:
Sum + 1 = 10000000000000000000000000000000000000000000000000000000000000000b
Das Ergebnis ist eine 1 mit 64 Nullen. Dies wandelt wir nun wieder in Dezimal zurück.
Sum + 1 = 2^64
Also gilt:
Sum = 2^64 - 1
-
Ich würd vom Gesamtgewicht einfach das Gewicht eines einzelnen Reiskorns abziehen.
-
@Quiche-Lorraine danke für die Erklärung. Ich wusste nur, dass die Summe gross war. Milion Tönen oder noch mehr. Am Feld 64 ist die Anzahl 2^64. Ingesammte Summe ist noch größer. Ingesammte Anzahl ungerade Nummer, wegen 1 am Anfang. ? Wenn ich es richtig verstehe?
-
@odalv sagte in Das Gewicht von 2^64 Reisskörner:
@Quiche-Lorraine danke für die Erklärung. Ich wusste nur, dass die Summe gross war. Milion Tönen oder noch mehr. Am Feld 64 ist die Anzahl 2^64. Ingesammte Summe ist noch größer. Ingesammte Anzahl ungerade Nummer, wegen 1 am Anfang. ? Wenn ich es richtig verstehe?
Nein, die Anzahl auf (an? In der Nähe von?) Feld 64 ist nicht 2^64, sondern 2^63. Es wird ingesamt 63 mal verdoppelt, weil du auf Feld 1 schon mit einem Reiskorn startest. Die Summe ist also 1 + 2 + 4 + 8 + 16..., was 2^64 -1 entspricht.
-
@odalv sagte in Das Gewicht von 2^64 Reisskörner:
Am Feld 64 ist die Anzahl 2^64.
Auf dem 64. Feld liegen jedenfalls Körner, nicht . (sofern die aufs Feld passen und nicht irgendwo daneben verstreut liegen...)
-
@DocShoe etwa 267 Milliarden Tonen.
https://www.atlasbig.com/de-at/laender-nach-weizenproduktion#:~:text=Weltweit führende Weizenproduktionsländer 1 Pro Jahr werden weltweit,4 Österreich liegt mit 1.970.364 auf Platz 40.Weltweite jährliche Weizenproduktion ist etwa 749 Millionen Tonen
-
@odalv sagte in Das Gewicht von 2^64 Reisskörner:
@DocShoe etwa 267 Milliarden Tonen.
https://www.atlasbig.com/de-at/laender-nach-weizenproduktion#:~:text=Weltweit führende Weizenproduktionsländer 1 Pro Jahr werden weltweit,4 Österreich liegt mit 1.970.364 auf Platz 40.Weltweite jährliche Weizenproduktion ist etwa 749 Millionen Tonen
Und?
-
@wob Danke, so ist ok