如何在二进制上应用按位右移运算符?

时间:2014-10-17 19:14:31

标签: javascript bitwise-operators bit-shift

如何对二进制执行按位右移?

JS中的

>>适用于整数。因此,6 >> 1(按位向右移位,步骤1)显示3为结果(110 >> 1 = 011 - 正确)。这很好,但是......是否可以使用二进制的右移运​​算符?

我需要这个:110 >> 1正常工作。这将显示55结果,这是正确的。 110是01101110. 01101110 >> 1 = 0011011100110111是55.正确。但我希望011作为结果!我怎么能在js中做到这一点?

2 个答案:

答案 0 :(得分:3)

这对我来说就像字符串操作。怎么样:

function shr(x, s) {
    return
        new String('0', Math.min(s, x.length)) +
        x.substr(0, Math.max(0, x.length - s));
}

>>> shr('110', 1)
'011'

或者,您可以使用通常的按位运算符,只需事先从字符串表示转换(一次),然后转换回字符串表示(一次)。

答案 1 :(得分:1)

这是一种方法:

(parseInt("110",2) >> 1).toString(2)      // gives "11"

parseInt可以将radix作为参数,因此如果您传递2,它会将字符串视为二进制。所以你转换成一个数字,转移它然后使用toString(这也方便地将radix作为参数)转换回二进制字符串。