JavaScript数字和按位操作

JavaScript数字和按位操作,javascript,numbers,bitwise-operators,bit-shift,Javascript,Numbers,Bitwise Operators,Bit Shift,我知道JSNumber类型是IEEE754双精度浮点。 鉴于这一事实,JS如何执行逐位操作 -1>>>1 => 2147483647 它仅仅是以编程方式模拟逐位操作,还是该语言实际上对逐位操作有特殊处理,比如在使用逐位时,在寄存器上加载数字作为Int32位模式,等等 我对性能不是吹毛求疵,但考虑到按位操作是众所周知的高效操作,并且经常因此而使用,我想知道这里的内部结构。是的,它只是转换它们(u)int32@Bergi在何处转换它们?在语言的指定语义中…计算操作数,强制为数字,这些被转换成整数,

我知道JS
Number
类型是IEEE754双精度浮点。 鉴于这一事实,JS如何执行逐位操作

-1>>>1
=> 2147483647
它仅仅是以编程方式模拟逐位操作,还是该语言实际上对逐位操作有特殊处理,比如在使用逐位时,在寄存器上加载数字作为
Int32
位模式,等等


我对性能不是吹毛求疵,但考虑到按位操作是众所周知的高效操作,并且经常因此而使用,我想知道这里的内部结构。

是的,它只是转换它们(u)int32@Bergi在何处转换它们?在语言的指定语义中…计算操作数,强制为数字,这些被转换成整数,对整数进行运算,结果整数被转换回一个数字并作为表达式结果返回。当然,实际引擎如何实现这些语义是一个完全不同的问题。它可能永远不会以浮点数开始,只要它不离开整数范围,就在内存中已经将其表示为整数。优化的可能性是无穷无尽的。因此,这个问题的真正答案似乎是“它取决于解释器的实现。”我其实很想知道这一点。谢谢