在javascript中,计算期间是否按位或使用iee-754作为存储格式?;

在javascript中,计算期间是否按位或使用iee-754作为存储格式?;,javascript,ieee-754,bitwise-or,Javascript,Ieee 754,Bitwise Or,如果按位OR使用ieee-754在Javascript中计算结果,我无法理解结果 例如: 2|1 =>3 在ieee-754中, 2存储为0 1000000000…0000,并且 1存储为0 011111111 0000…0000 如果exec按位或,我认为结果是0 11111111 0000…0000,但为什么它会输出3 同上, 例如: 0.1|0 =>0 2|-1 =>-1 0存储为0 00000000000…0000,并且 0.1存储为0 0111110111001

如果按位OR使用ieee-754在Javascript中计算结果,我无法理解结果

例如:

2|1 =>3
在ieee-754中,
2
存储为
0 1000000000…0000
,并且
1
存储为
0 011111111 0000…0000

如果exec按位或,我认为结果是
0 11111111 0000…0000
,但为什么它会输出
3

同上,

例如:

0.1|0 =>0
2|-1 =>-1
0
存储为
0 00000000000…0000
,并且
0.1
存储为
0 011111011100110010

如果exec按位或,我认为结果是
0 011111011100110010
,但为什么它会输出
0
,并丢失小数

例如:

0.1|0 =>0
2|-1 =>-1
2
存储为
0 1000000000…0000
,并且
-1
存储为
1 011111111 0000…0000


如果exec按位或,我认为结果是
11111111 0000…0000
,但为什么它会输出
-1

JavaScript是ECMAScript的一个实现。指定了第12.12条中的二进制位运算符。12.12.3中的评估步骤包括(使用“@”表示一个位运算):

  • 让lnum去吧?ToInt32(左心室)
  • 让rnum去吧?ToInt32(右旋)
  • 返回将按位运算符@应用于lnum和rnum的结果。结果是一个有符号的32位整数

  • 因此,不对表示
    数字的字节执行逐位操作。
    数字的值
    转换为整数的32位2的补码表示,并对这些位执行运算。然后,结果位被解释为32位2的补码表示,因此它们表示的值成为操作产生的值。

    在javascript中,数字被转换为32位整数,然后进行逐位运算,结果被转换回64位浮点的标准格式。是否有一些规范或文档表明了这一点@NinaScholzhere you go:也用于实际的类型双关,这样您就可以按位或浮点数字的位模式。但不完全是重复的。你错过了整数部分。