Uhrzeit und Datum in Binärzahlen umwandeln



  • Hey,
    ich habe ein Problem. Es ist kein Problem normale Zahlen wie "848" und "123" in das Binärsystem zu transformieren. Ich habe mich grfragt wie man zum Beispiel Datumsanzeigen und Uhrzeit im Binärsystem anzeigen lässt.

    Zum Beispiel:

    Uhrzeit: 11:20 (Stunden, minuten)

    Wie kann ich dies ins Binärsystem umwandeln, muss ich die beiden einfach dividieren und dann ins Binärsystem umwandeln?

    Datum: 12:10 (Tag, Monat)

    Wie wandle ich dies ins Binärsystem um?

    Danke,
    sgtfa





  • Mensch Danke, echt toll von dir.

    sgtfa



  • haengt davon ab, was du machen willst. die frage klingt so, als wuerdest du die zeit so anzeigen wollen. dann waere es natuerlich bloed, sie vorher in sekunden ab 1970 oder so umzuwandeln, weil es dann kein mensch mehr vernuenftig dekodieren kann. hier wuerde es sich tatsaechlich anbieten, die zahlen 11 und 20 extra umzuwandeln und getrennte reihen von leds zu anzeige zu verwenden.



  • Es geht einfach um eine ganz simple aufgabe ohne C++ Hintergrund, jedenfalls zu Beginn. Ich muss nur

    10:11 (Stunden, Minuten) und z.B

    11.10 (Tag, Monat)

    ins Dualsystem umrechnen...

    sgtfa



  • Da bietet sich die primitve Lösung von Peter eigentlich an - du wandelst jeden Bestandteil für sich in eine Dualzahl um und hängst diese dann aneinander:

    10:11 -> 01010 001011 (Stunden auf 5 Bit, Minuten/Sekunden auf 6 Bit)
    11.10. -> 01011 1010 (Tage auf 5 Bit, Monate auf 4 Bit)

    PS: Die Bit-Größen sind so gewählt, daß der größtmögliche Wert (23:59 bzw. 31.12.) noch reinpasst.



  • Ja das ist toll. Ich habe trotzdem die Sekunden seit 1970 ausgerechnet, wahrscheinlich ist dies aber nicht richtig, da das jeweilige Jahr zum Beispiel niocht gegeben ist.

    Die Lösung mit den optimal gewählten Bits ist Spitze. Allerdings müsste ich nun noch irgendwie rausfinden wie ich denn mit einem Vierbit System arbeite.

    Teile ich dann (Im Falle des 4Bit wie beim Monat) mit 5 anstatt mit den "normalen" 2?

    Danke für die tolle Hilfe,
    sgtfa



  • sgtfa schrieb:

    Die Lösung mit den optimal gewählten Bits ist Spitze. Allerdings müsste ich nun noch irgendwie rausfinden wie ich denn mit einem Vierbit System arbeite.

    Was meinst du mit Vier-Bit-System? Wenn du Probleme hast, 9- oder 11-Bit-Zahlen unterzubringen, mußt du sie notfalls auf die nächstmögliche Größe verlängern.

    Teile ich dann (Im Falle des 4Bit wie beim Monat) mit 5 anstatt mit den "normalen" 2?

    Was willst du teilen? Zur Umrechnung eines Einzelwertes in Binärdarstellung verwendest du "handelsübliche" Umrechnungen - die einzelnen Teile kannst du dann mit Bit-Shifts, -And und -Or zusammenfügen (und bei Bedarf wieder trennen).

    PS: Wenn du keine Jahreszahl hast, kannst du eine (reine) Uhrzeit auch als "Sekunden seit Mitternacht", ein Datum als "Tage seit Neujahr (den 29.Februar prophylaktisch mitgezählt)" bzw. ein gemischtes Datum+Uhrzeit als "Sekunden seit Neujahr" speichern - das könnte sogar kompakter sein als meine obige Darstellung.



  • Wie kommst du denn oben auf diese Werte für die gegebenen Dezimalzahlen?

    10:11 -> 01010 001011 (Stunden auf 5 Bit, Minuten/Sekunden auf 6 Bit)

    Wenn ich zum Beispiel 10 umrechne, bekomme ich 1010, und nicht 01010, wie kommt das?

    Danke,
    sgtfa


  • Mod

    sgtfa schrieb:

    Wenn ich zum Beispiel 10 umrechne, bekomme ich 1010, und nicht 01010, wie kommt das?

    1010 und 01010 bezeichnen dieselbe Zahl. Im klassischen Stellenwert-System spielen führende Nullen keine Rolle.



  • Was würde ich nur ohne euch machen.

    Vielen Dank,
    sgtfa



  • sgtfa schrieb:

    Was würde ich nur ohne euch machen.

    Selber nachdenken 😃 *scnr*


Anmelden zum Antworten