3.9 | 0为什么类似于Math.floor(3.9)呢

为什么会有向下取整的效果呢,原理是什么呢

阅读 2.6k
2 个回答

因为位操作的结果是一个32位整数。即使被操作数是小数也会被转化为整数。
不光3.9|0可以实现跟Math.floor一样的效果,3.9&-1也一样是这个结果,因为将任一数值 x 与 -1 执行按位与操作,其结果都为 x【整数,小数也会转化成整数】;-(~3.9)-1 也是3,3.9<<1>>1也是3,其实说白了就是利用位操作舍弃小数的原理,虽然也有二进制的小数位,但位操作无视了,只关心整数部分。

3.9的二进制是11,0的二进制是0
| 是按位运算 11|0 = 11
二进制11还是3
跟Math.floor(3.9)没有关系,是值刚好相同而已


确实上面说的有误,不是3.9的二进制是11,而是位运算会取整运行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题