逻辑右移是否总是在JavaScript中移动源代码之前将其剪裁为32位?

逻辑右移是否总是在JavaScript中移动源代码之前将其剪裁为32位?,javascript,bit-shift,Javascript,Bit Shift,很简单,真的。0xf12345678>>>4是否总是作为JavaScript的结果生成0x1234567?我可以假设这在所有浏览器中都能工作吗?应该是一个可靠的假设。任何JS解释器在计算任何操作之前都会将0xf12345678作为单个操作数读取。如果您希望安全,为什么不(0xf12345678)>>4 有关这一问题的一些细节如下: 按位运算符将其操作数视为32位(零)的序列 和1),而不是十进制、十六进制或八进制数。对于 例如,十进制数字9的二进制表示为1001。 按位运算符对这样的二进制文件执

很简单,真的。
0xf12345678>>>4
是否总是作为JavaScript的结果生成
0x1234567
?我可以假设这在所有浏览器中都能工作吗?

应该是一个可靠的假设。任何JS解释器在计算任何操作之前都会将
0xf12345678
作为单个操作数读取。如果您希望安全,为什么不
(0xf12345678)>>4

有关这一问题的一些细节如下:

按位运算符将其操作数视为32位(零)的序列 和1),而不是十进制、十六进制或八进制数。对于 例如,十进制数字9的二进制表示为1001。 按位运算符对这样的二进制文件执行操作 表示,但它们返回标准JavaScript数值


是的,根据ECMAScript 5规范,
>
操作符执行内部
ToUInt32
算法

见:

  • 设lref为计算移位压力的结果
  • 设lval为GetValue(lref)
  • 设rref为计算AdditiveExpression的结果
  • 设rval为GetValue(rref)
  • 让lnum成为32(lval)
  • 设rnum为32(rval)
  • 设shiftCount是屏蔽除最低有效5位之外的所有rnum的结果,即计算rnum&0x1F
  • 返回通过移位计数位执行lnum零填充右移的结果。空出的位用零填充。结果是 无符号32位整数
  • 结果总是32位整数,这一点非常清楚

    >
    运算符通常用于转换为32位无符号整数。例如,MDN在其垫片中使用它。例如: