Problem mit großen Zahlen

OP #1867181
Lesenswert?
• ▲
▼
Hallo,

ich habe ein Problem mit avr-gcc und dem Umgang mit großen Zahlen.

Ich muss einen Wert den ich in Sekunden besitze in Stunden umwandeln und 
auf einem Display ausgeben.
Soweit, so gut.

Die Sekunden liegen mir in bis zu vier Hex-Werten vor.
Der maximale Wert ist jeweils 0xFF

Die Werte lassen sich auch einfach zusammentüddeln:

wert1*0x01 + wert2*0x100 + wert3*0x10000

nur spätestens da wird die geschichte ziemlich groß.
Dann muss das ganze noch durch 3600 (0xE10) geteilt werden, damit ich 
meine Stunden hab.

Und wenn ich versuche das ganze auf nem Display mit sprintf auszugeben, 
darf meine variable nicht größer als uint16 sein.

Also wie stelle ich das am besten an?
Moderator (Firma: Titel) Persönliche Seite #1867205
Lesenswert?
• ▲
▼
Phil J. schrieb:
> Und wenn ich versuche das ganze auf nem Display mit sprintf auszugeben,
> darf meine variable nicht größer als uint16 sein.
Das wären doch immerhin 65535 Stunden...

> Also wie stelle ich das am besten an?
Ich vermute mal, dass dein Ansatz irgendwie verkorkst ist.
Poste mal deinen Code und sag dort, wo es klemmt...
Gast #1867232
Lesenswert?
• ▲
▼
Sekundenzähler als unsigend long und dann für die
Stunden durch 3600 teilen. Den Wert auf uint16 prüfen (wenn wichtig
"überlauf" auswerten) und dann in uint16 casten.
Wie Lothar bereits schrieb sind dann halt "nur" max.65535 Stunden.
#1867237
Lesenswert?
• ▲
▼
und wiveiel Stellen hinter dem Komma sollen es sein? wenn es nicht 100% 
genau sein soll, dann könnte man Wert1 ignorieren, nur noch wert2*0x01 + 
wert3*0x0100... machen und auch nur durch (3600/256) teilen statt durch 
3600. Dann hätte man beim Zwischenschritt der Gesamtsekunden schonmal 
eine Größenordnung weniger...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.