javascript - 理解本例中的按位运算

标签 javascript quicksort bitwise-operators

我正在研究 JavaScript 中的一些常见算法实现,并在寻找快速排序时发现了这个: https://rawgit.com/escherba/algorithms-in-javascript/master/src/quickmiddle-sort.js

它还实现了数组分区函数:

function partition(array, left, right) {
        var pivot = array[(left + right) >>> 1];
        while (left <= right) {
            while (array[left] < pivot) { left++; }
            while (array[right] > pivot) { right--; }
            if (left <= right) {
                var temp = array[left];
                array[left++] = array[right];
                array[right--] = temp;
            }
        }
        return left;
}

我想知道按位运算背后的数学原理是什么,我对它们来说是个新手。

最佳答案

假设您正在询问这部分

(left + right) >>> 1

添加了两个操作数和 zero-fill shift right >>> operator一点点。

例如,您的值为 9 并向右移动一位。

      9 (base 10): 00000000000000000000000000001001 (base 2)
                   --------------------------------
9 >>> 1 (base 10): 00000000000000000000000000000100 (base 2) = 4 (base 10)

结果是整数4

关于javascript - 理解本例中的按位运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973900/

相关文章:

组合框中的 Javascript 数组

javascript - 如何访问嵌套在 h1 标签中的 img 标签元素

javascript - react native 语法错误 : Unexpected Token, 预期}

c - 按位连接

C - 将 char 转换为 int 以对输出执行按位操作

小端大端的混淆

javascript - React-redux REST API this.state 为 null

关于变量作用域规则的Python问题

java - 按键和值排序

quicksort - APL中快速排序的解释