Wie rechnet eine 32 Bit Maschine mit großen Zahlen?
pl
- hardware
- perl
Also ich verstehe das nicht:
auf meiner 32 Bit Maschine liefert Perl mit
# Sekunden
my $sec = 1386939247;
# millisekunden
my $msec = 1386939247000;
# Ergebnis ist gleich
printf qq(
Aus Sekunden: %s
Aus Millisekunden: %s
),
scalar localtime($sec),
scalar localtime($msec/1000);
printf qq(
Sekunden: %08X
Millisekunden: %08X
), $sec, $msec;
als Ergebnis
Aus Sekunden: Fri Dec 13 13:54:07 2013
Aus Millisekunden: Fri Dec 13 13:54:07 2013
Sekunden: 52AB036F
Millisekunden: FFFFFFFF
Wie kann das Ergebnis gleich sein, wenn 0xFFFFFFFF durch 1000 geteilt wird? Und eigentlich dürfte ja schon bei der Deklaration von 1386939247000
als Zahl eine Meldung erscheinen weil diese Zahl als Zahl mehr als 32 Bit bötigt.
Bitte mal um Hinweise.
perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
Hi,
auf meiner 32 Bit Maschine liefert Perl mit Wie kann das Ergebnis gleich sein, wenn 0xFFFFFFFF durch 1000 geteilt wird? Und eigentlich dürfte ja schon bei der Deklaration von
1386939247000
als Zahl eine Meldung erscheinen weil diese Zahl als Zahl mehr als 32 Bit bötigt.
Ein erfahrener Programmierer weiß, daß Zahlen, die breiter sind als die maschineninherente Bitbreite sind, trotzdem berechnet werden können - sonst hätten ja die 8-Bit-Rechner nur Zahlen bis (unsigned) 256 bzw. (signed) 127 berechnen können.
Die verschiedenen Bereiche der Zahl werden dann halt nacheinander bearbeitet, wenn's nicht gleichzeitig geht, weil die Zahl zu breit ist.
cu,
Andreas a/k/a MudGuard
Hi danke,
Die verschiedenen Bereiche der Zahl werden dann halt nacheinander bearbeitet, wenn's nicht gleichzeitig geht, weil die Zahl zu breit ist.
Kann ja nur so sein, Stichwort Register. Mein Denkefehler war ja, daß 0xFFFFFFFF durch 1000 geteilt dasselbe ergibt, tatsächlich jedoch wird die richtige Zahl intrn geteilt und nicht die Zahl 0xFFFFFFF.
Badewetter 😉
Mit oder ohne Fühstück, das ist hier die Frage.