Wirtschaftsinformatik Basics Aufgabe unlösbar?

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.

Woher ich das weiß:Studium / Ausbildung – Studienabschluss in Informatik