如何对二进制执行按位右移?
JS中的 >>
适用于整数。因此,6 >> 1
(按位向右移位,步骤1)显示3为结果(110 >> 1
= 011
- 正确)。这很好,但是......是否可以使用二进制的右移运算符?
我需要这个:110 >> 1
正常工作。这将显示55结果,这是正确的。 110是01101110. 01101110 >> 1 = 00110111
。 00110111
是55.正确。但我希望011
作为结果!我怎么能在js中做到这一点?
答案 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
作为参数)转换回二进制字符串。