Wirtschaftsinformatik Basics Aufgabe unlösbar?
Hallo,
wäre jemand vielleicht so lieb und würde diese Aufgabe Schritt für Schritt lösen, sodass ich das Vorgehen vom Anfang bis zum Ende verstehe? Nicht mal ChatGPT war dazu in der Lage und lieferte mir widersprüchliche Ergebnisse. Ich weiß aus der Recherche im Internet, dass der 19. Januar 2038 für den ersten Aufgabenteil herauskommen sollte. Ich hänge jetzt schon seit Stunden hieran fest und es wäre total hilfreich. Vielen Dank!!
Aufgabe:
In Unix-Systemen würde es ohne entsprechende Maßnahmen im Jahr 2038 ein großes Problem geben, da hier Datums-/Zeitwerte in Form von Sekunden seit dem 01.01.1970 00:00:00 als 32-Bit-Wert (signed) abgebildet werden. Ermitteln Sie, wann genau dieses Problem auftritt. Beschreiben Sie kurz, weshalb dieses Problem weltweit massive Auswirkungen auf alle möglichen Bereiche des Lebens haben würde. Man stellt mittlerweile die Systeme schon auf 64-Bit (signed) um. Bis zu welchem Jahr werden dann Datums-/Zeitwerte korrekt behandelt? Gehen Sie vereinfachend davon aus, dass jedes vierte Jahr ein Schaltjahr ist
3 Antworten
Das ist durchaus lösbar. Der maximale Wert der von 32 bits als dezimale Zahl dargestellt werden kann ist 2^31-1 oder 2.147.483.647. Nach so vielen Sekunden würde der Speicher überlaufen und könnte die nächst größere Einheit nicht mehr darstellen. Das sind 68 Jahre (Schaltjahre mit einberechnet) 18 tage 3 stunden 14 minuten und 7 Sekunden. Also würde das Problem am 19.01.2038 um 3:14:07 auftreten.
Bei 64 bits sind es 2^63-1 und damit tritt das Problem im jahre 9223372036854777778 ziemlich genau am 01.01. Auf.
Nicht mal ChatGPT war dazu in der Lage
Dann ist es absolut unlösbar. ChatGPT weiß nämlich alles und macht nie Fehler. Ohne ChatGPT kann man leider überhaupt nichts wissen.
Ich hänge jetzt schon seit Stunden hieran fest
Zum Glück hat die Frage wenig mit Wirtschaftsinformatik zu tun und praktisch nur mit den Grundrechnungsarten und minimalem Wissen über Zeiteinheiten.
Du musst offenbar zum 1.1.1970 so viele Sekunden addieren, wie in einen vorzeichenbehafteten 32-bit-Wert auf der "Positivseite" passen. Letzteren Wert wirst du hoffentlich ohne ChatGPT herausfinden.
Wieviele Sekunden ein Jahr hat, solltest du berechnen können (24*60*60*365). In Schaltjahren kommt halt ein Tag dazu. Somit hat ein Jahr im Durchschnitt 365,25 Tage und damit die entsprechende Sekundenzahl.
Dann dividierst du den vorhin recherchierten Wertebereich durch diese Sekundenzahl und kommst auf die Jahre seit 1970. Den dann noch verbleibenden Bruchteil bzw. Divisionsrest musst du ggf. noch in Monate/Tage/Stunden/Minuten zurückrechnen, um das genaue Datum in diesem Jahr zu bekommen. Fertig.
Wenn du das geschafft hast, ist die gleiche Übung mit einem 64-bit-Wert dasselbe in grün.
Statt ChatGPT oder hier zu fragen könntest du halt einfach nachdenken und recherchieren, dann hättest du die Lösung längst.
Also Schritt für Schritt:
Erstmal finden wir heraus wie viele Sekunden in 32bit signed gespeichert werden können:
32 bit bedeutet 2^32, da es aber um signed geht müssen wir ein Bit für das Vorzeichen Bit abziehen, also 2^31. Dann wollen wir nur das positive Maximum, das ist aufgrund des Zweierkomplement bei 2^31 -1.
Wann ist das?
2^31 -1= 2.147.483.647 Sekunden
Ein normales Jahr sind 31.536.000 Sekunden, ein Schaltjahr 31.622.400 Sekunden. Um nun die Sekunden in Jahre umrechnen zu können brauchen wir die Sekunden eines durchschnittlichen Jahres:
(3*31.536.000+1*31.622.400)/4=31.557.600
2.147.483.647/31.557.600= 68,0496503853
Also 68 Jahre und 18 Tage, 3 Stunden, 14 Minuten, 7 Sekunden
(Berechnung der Tage, Stunden etc über Umrechnung des jeweiligen Rest. 0,0496503853* ((365*3+366)/4)= Anzahl Tage usw)
Ausgehend von 1970 wäre das 19.01.2038 3:14:07 als maximal darstellbare Zeit.
(Man kann das natürlich auch recherchieren, aber rechnen ist besser um was zu lernen)
So nun wo wir das haben:
Warum ist das ein Problem?
Was passiert denn mit der Uhrzeit nach dieser Grenze? Die Uhr springt auf 20:45:52 Uhr am Freitag, 13. Dezember 1901 UTC (sofern bei der Umwandlung keine Vorkehrungen getroffen werden)
Was passiert wohl mit Systemen wenn die Systemzeit plötzlich mehr als hundert Jahre in der Vergangenheit liegt? Alles mögliche könnte auf Fehler laufen oder unerwartetes Verhalten ausführen.
Viele Systeme, auch Android läuft auf Unix Derivaten die potentiell davon betroffen sind. Kritisch sind vermutlich Server- und Industriesysteme die Teils sehr alt und von der Software schwierig zu warten sind.
64bit signed.
Das kannst du ja selbst ausrechnen, ist fast die gleiche Rechnung wie oben.
Alternativ kannst du nach Y2038 Bug suchen und dich dort informieren.
efsd