Moin!
Möchtest Du in BCD statt in binär rechnen? Warum willst Du auf Krampf mit Bitoperatoren arbeiten? Kann Dein Zielsysten nicht multiplizieren?
Guck Dir doch mal die übl(ich)e Rückrechnung an:
Sekundenangabe in hms zurückrechnen
sub s2hms{
my $s = shift;
$s %= 86400; # Periode rausrechnen
my($h, $hrest) = intrest($s, 3600); # integer + rest
my($m, $s) = intrest($hrest, 60);
return($h, $m, $s);
}
>
> Dieser Code wäre doch schiel vöner mit Bitoperatoren, die auch dem Perl-Interpreter recht willkommen sind.
Keins der auf Computern existenten Zahlensysteme ist kompatibel zur Basis 60. Weder Binär- noch BCD-Arithmetik hilft dir hier.
Im Prinzip willst du ein System, welches von (0) bis (59) zählt und dann auf (1)(0) weiterspringt, und nicht auf (60). (Klammern verdeutlichen die Ziffern)
Da helfen dir aber keine Bitoperatoren. Menschliche Uhrzeit ist scheiße zu bearbeiten im Rechner. Deswegen gibts ja auch die Unix-Timestamps, die einfach nur Sekunden zählen. Das ist viel einfacher zu behandeln, und für irgendeine "schöne" Anzeige konvertiert man dann halt.
- Sven Rautenberg