javascript - JavaScript 中 >> 和 >>> 运算符有什么区别

标签 javascript bitwise-operators

运行以下 JavaScript 代码会在两种情况下显示 63:

  alert( 0xff >> 2 );
  alert( 0xff >>> 2 );

>>>>>> 有什么区别?他们的结果似乎是一样的。

最佳答案

>>是按位运算符,它将位向右移动。右边的任何位都将丢失。

 8 = 1000
     ^-->1
   = 0000 = 0

>>>做与 >> 类似的事情, 但它是无符号的,这意味着它的范围是从 0 到 232-1 而不是 +/- 231-1。

要查看我的第一条语句的运行结果,让我们使用按位运算符对数字求底:

1.234 >> 0         =  1 // Ok, fraction lost
1.234 >>>0         =  1 // Ok, fraction lost
-1.23 >> 0         = -1 // Ok, fraction lost
-1.23 >>>0         = 4294967295 // (negative numbers are not within the range)

Math.pow(2,31) >> 0  = -2147483648 // 2^31 is out of range
Math.pow(2,31) >>> 0 = 2147483648

因此,当超出范围的上限时,计算将在其下限继续进行,反之亦然(例如 << )。下面的插图显示了当您使用 n = (n + 1) >> 0 时会发生什么, 和 >>> 0 , 对于 n从最低边界开始。

// Signed       Unsigned
     >>            >>>
-2147483647             0
-2147483646             1
...                   ...
 2147483646    4294967294
 2147483647    4294967295
-2147483647             0
-2147483646             1

关于javascript - JavaScript 中 >> 和 >>> 运算符有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8892206/

相关文章:

Javascript 确认对话框显示错误文本

C#将按位运算符作为参数传递

JavaScript 和位运算符

java - 从二进制转换中删除前导零

javascript - 检查单选按钮选择是否针对 2 个提交按钮

javascript - url 编码组件未进入字符串服务器端

javascript - 检查某些 a 标签的 href 属性是否与当前页面 URL 匹配(使用 jQuery)?

javascript - 来自同一元素上两个脚本的单击事件?

javascript - 如何在 PHP 中实现 JS 风格的按位左移运算符?

小端大端的混淆