相关疑难解决方法(0)

为什么0乘以截断小数?

我最近发现了这段JavaScript代码:

Math.random() * 0x1000000 << 0
Run Code Online (Sandbox Code Playgroud)

我知道第一部分只是生成0到0x1000000(== 16777216)之间的随机数.

但第二部分似乎很奇怪.执行0位移位有什么意义?我不认为它会做任何事情.然而,经过进一步调查,我注意到0的偏移似乎截断了数字的小数部分.此外,无论是右移,左移,还是无符号右移,都无关紧要.

> 10.12345 << 0
10
> 10.12345 >> 0
10
> 10.12345 >>> 0
10
Run Code Online (Sandbox Code Playgroud)

我用Firefox和Chrome测试过,行为是一样的.那么,这个观察的原因是什么?它只是JavaScript的细微差别,还是也出现在其他语言中?我以为我理解了位移,但这令我感到困惑.

javascript numbers operators bit-shift bitwise-operators

20
推荐指数
3
解决办法
5713
查看次数