2014-10-17 45 views
1

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

>>在JS中适用于整数。因此,6 >> 1(按位右移,第1步)显示结果为3(110 >> 1 = - 正确)。这很好,但是...是否可以使用二进制右移运算符来工作?

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

+3

将数字除以10? – thefourtheye 2014-10-17 19:16:29

+3

另外,你为什么要这个? – Cameron 2014-10-17 19:21:23

+0

明显的问题:那不是二元的。这是只有数字1和0的小数。 – harold 2014-10-19 15:34:16

回答

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

下面是做这件事:

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

parseInt可以采取radix作为参数,所以如果你传递2它将把字符串作为二进制文件。所以,你转换为一个数字,转换它,然后使用toString(它也方便地将radix作为参数)转换回二进制字符串。