什么>>在javascript中做什么?

时间:2012-06-07 13:04:18

标签: javascript

在查看“Crossfilter”来源时,我遇到了一个使用>>的函数。以下是功能:

  // Similar to bisectLeft, but returns an insertion point which comes after (to
  // the right of) any existing entries of x in a.
  //
  // The returned insertion point i partitions the array into two halves so that
  // all v <= x for v in a[lo:i] for the left side and all v > x for v in
  // a[i:hi] for the right side.

  function bisectRight(a, x, lo, hi) {
    while (lo < hi) {
      var mid = lo + hi >> 1;
      if (x < f(a[mid])) hi = mid;
      else lo = mid + 1;
    }
    return lo;
  }

Google没有返回任何结果,我以前从未见过这个。在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

这是sign-propagating right shift operator

  

该运算符将第一个操作数移位指定的位数   正确的。向右移位的多余位被丢弃。副本   最左边的位从左边移入。自新   最左边的位与前一个最左边的位,即符号具有相同的值   位(最左边的位)不会改变。由此得名   “签传播”。

答案 1 :(得分:2)

答案 2 :(得分:1)

它按向右移位,大致类似于整数除以2 ^ x(在您的示例中 - 只需除以2即可找到平均值)。它是bitwise operators中的一个碰巧存在于许多语言中并使用数字的二进制表示。它通常用于性能原因,因为它几乎总是比分割更快。