gpt4 book ai didi

javascript - `Math.trunc` vs `|0` vs `<<0` vs `>>0` vs `&-1` vs `^0`

转载 作者:行者123 更新时间:2023-12-04 00:43:21 30 4
gpt4 key购买 nike

我刚刚发现在 ES6 中有一个新的数学方法:Math.trunc .

我在 MDN article 中阅读了它的描述。 , 听起来像使用 |0 .

此外,<<0 , >>0 , &-1 , ^0也做类似的事情(感谢@kojiro 和@Bergi)。

经过一些测试,似乎唯一的区别是:

  • Math.trunc返回 -0区间中的数字 (-1,-0] .位运算符返回 0 .
  • Math.trunc返回 NaN与非数字。位运算符返回 0 .

  • 是否有更多差异(在所有差异中)?
    n      | Math.trunc | Bitwise operators
    ----------------------------------------
    42.84 | 42 | 42
    13.37 | 13 | 13
    0.123 | 0 | 0
    0 | 0 | 0
    -0 | -0 | 0
    -0.123 | -0 | 0
    -42.84 | -42 | -42
    NaN | NaN | 0
    "foo" | NaN | 0
    void(0)| NaN | 0

    最佳答案

    Math.trunc(Math.pow(2,31)) 怎么样与 Math.pow(2,31) | 0
    对有符号的 32 位整数执行按位运算。因此,当您执行 Math.pow(2, 31) 时,您会以“10000000000000000000000000000000”位的形式获得此表示。因为这个数字必须转换为有符号的 32 位形式,所以我们现在在符号位的位置有一个 1。这意味着我们正在查看带符号的 32 位形式的 -eve 数字。然后,当我们对 0 进行按位或运算时,我们会以有符号的 32 位形式得到相同的结果。十进制是-2147483648。

    旁注:在带符号的 32 位形式中,可以用二进制表示的小数范围是 [10000000000000000000000000000000, 0111111111111111111111111111111]。在十进制(以 10 为底)中,此范围为 [-2147483648, 2147483647]。

    关于javascript - `Math.trunc` vs `|0` vs `<<0` vs `>>0` vs `&-1` vs `^0`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22156688/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com