Warum wird eine Verschiebung von 0 abschneiden der Dezimalstellen?

Vor kurzem fand ich dieses Stück JavaScript-code:

Math.random() * 0x1000000 << 0

Habe ich verstanden, daß der erste Teil war nur die Generierung einer Zufallszahl zwischen 0 und 0x1000000 (== 16777216).

Aber der zweite Teil schien seltsam. Was ist der Punkt der Durchführung einer bit-shift von 0? Ich glaube nicht, dass er alles tun würde. Bei der weiteren Untersuchung, ich habe jedoch festgestellt, dass die Verschiebung von 0 schien abschneiden der Nachkommastellen der Zahl. Darüber hinaus spielte es keine Rolle, ob es ein rechts oder ein Links-shift, oder sogar eine vorzeichenlose rechts-shift.

> 10.12345 << 0
10
> 10.12345 >> 0
10
> 10.12345 >>> 0
10

Getestet habe ich sowohl mit Firefox und Chrome, und das Verhalten ist das gleiche. Also, was ist der Grund für diese Beobachtung? Und ist es nur eine nuance von JavaScript, oder tritt es auch in anderen Sprachen? Ich dachte, ich Verstand bit-Verschiebung, aber das hat mich verwirrt.

Siehe auch stackoverflow.com/questions/3081987/...
In anderen Sprachen, ist es meistens nicht funktioniert. Python, C#, VB.NET, Java, Ruby alle verbieten es, unter... so ziemlich alles andere.
Es hat die gleiche Wirkung Perl, obwohl.

InformationsquelleAutor voithos | 2012-08-25

Schreibe einen Kommentar