为什么是;1<&书信电报;32“;在Javascript中等于1

为什么是;1<&书信电报;32“;在Javascript中等于1,javascript,Javascript,如果1是32位,则与许多语言一样,左移位运算符只使用五个最低有效位(将移位距离视为32位整数)。请参阅步骤7 因此: 1 Javascript只支持带位移位的32位数字。如果您阅读文档,您会注意到@Amy ok,因此结果应该是0而不是1,然后我没有向下投票,但如果让我猜一猜的话:因为你的问题是如此,这表明你没有对你的问题进行研究。@那些不正确的学校选择它们的名字是为了让它们听起来更“正式”;因此,人们经常认为他们与W3C有关。它们不像以前那么坏了,但仍然很坏。过去情况更糟。屏蔽除5个最低位之外的

如果1是32位,则与许多语言一样,左移位运算符只使用五个最低有效位(将移位距离视为32位整数)。请参阅步骤7

因此:


1 Javascript只支持带位移位的32位数字。如果您阅读文档,您会注意到
@Amy ok,因此结果应该是0而不是1,然后我没有向下投票,但如果让我猜一猜的话:因为你的问题是如此,这表明你没有对你的问题进行研究。@那些不正确的学校选择它们的名字是为了让它们听起来更“正式”;因此,人们经常认为他们与W3C有关。它们不像以前那么坏了,但仍然很坏。过去情况更糟。屏蔽除5个最低位之外的所有位不是“32位整数”。但是,我想我是唯一一个认为“准旋转”是一个非常愚蠢的想法的人。@ScottHunter它仍然是一个32位的int,至少有27个前导零位;但我并不是指掩蔽后它是如何处理的,重要的是要知道它被当作掩蔽的int,因为尽管这个数字实际上是IEEE 754的双精度。这与JavaScript中按位
&
的工作方式一致。其他语言处理什么x@ScottHunterJava可以,但我错误地认为C/C++也可以(相反,它是未定义的行为)。我相信还有其他语言能做到这一点,但我现在不能说出任何语言的名字。@ScottHunter我个人不喜欢这种行为,我同意结果是
0
更有语义。我更喜欢Python所做的,它允许您在不丢失有效位的情况下任意移位。使用BigInt(
1n)可以很快在JavaScript中实现这一点