Thread RDW 2007/8 -- Aprilscherz
(29 answers)
Opened by Ishka at 2007-04-01 15:41
@GoodFella
Quote Das liegt schlicht und ergreifend daran, daß die gewählte Zahl den Wertebereich einer Integer-Variablen auf Deiner Maschine übersteigt. ergibt Code: (dl
)
1.92290243240983e+22 d.h. die letzten (=niederwertigsten) Stellen können nicht mehr dargestellt werden und sind daher Null. (Der Genauigkeitsbereich von Zahlen bei deren Darstellung in Rechnern ist eben endlich) Daß Dein Beispiel mit AND das richtige Ergebnis liefert ist Zufall, denn Du wertest das niederwertigste Bit der darstellbaren Bits aus, nicht das niederwertigste Bit der Zahl an sich. Wenn Du's nicht glaubst, dann versuche das mal mit Code: (dl
)
$n = 1922902432409834798734330; Die &-Methode meint nämlich, die Zahl sei ungerade. Quote Wie gesagt, i.a. kannst Du das (aus den genannten Gründen) nicht auf Bit-Ebene machen. Aber irgendwie scheinst Du Dich der Begründung zu verschliessen, denn daraus geht klar hevor, warum man das nicht so machen kann. Gruss, Doc P.S. Wie gesagt, in der Regel klappt's ja mit "&", aber es ist eben nicht portabel, "%" hingegen schon.\n\n <!--EDIT|docsnyder|1175587456--> |