在javascript中,计算期间是否按位或使用iee-754作为存储格式?;
如果按位OR使用ieee-754在Javascript中计算结果,我无法理解结果 例如:在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
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中的评估步骤包括(使用“@”表示一个位运算):
因此,不对表示
数字的字节执行逐位操作。数字的值
转换为整数的32位2的补码表示,并对这些位执行运算。然后,结果位被解释为32位2的补码表示,因此它们表示的值成为操作产生的值。在javascript中,数字被转换为32位整数,然后进行逐位运算,结果被转换回64位浮点的标准格式。是否有一些规范或文档表明了这一点@NinaScholzhere you go:也用于实际的类型双关,这样您就可以按位或浮点数字的位模式。但不完全是重复的。你错过了整数部分。