如何在二进制上执行按位右移?如何在二进制中应用按位右移运算符?
>>
在JS中适用于整数。因此,6 >> 1
(按位右移,第1步)显示结果为3(110 >> 1
= - 正确)。这很好,但是...是否可以使用二进制右移运算符来工作?
我需要这个:110 >> 1
工作正常。这将显示55作为结果,它是正确的。 110是01101110. 01101110 >> 1 = 00110111
。 00110111
是55.正确。但我想011
为结果!我如何在js中做到这一点?
如何在二进制上执行按位右移?如何在二进制中应用按位右移运算符?
>>
在JS中适用于整数。因此,6 >> 1
(按位右移,第1步)显示结果为3(110 >> 1
= - 正确)。这很好,但是...是否可以使用二进制右移运算符来工作?
我需要这个:110 >> 1
工作正常。这将显示55作为结果,它是正确的。 110是01101110. 01101110 >> 1 = 00110111
。 00110111
是55.正确。但我想011
为结果!我如何在js中做到这一点?
这看起来像字符串操纵给我。如何:
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'
或者,你可以使用通常的位运算符和简单地从一个字符串表示事前(一次)转换,并重新转换为字符串表示事后(一次)。
下面是做这件事:
(parseInt("110",2) >> 1).toString(2) // gives "11"
parseInt
可以采取radix
作为参数,所以如果你传递2
它将把字符串作为二进制文件。所以,你转换为一个数字,转换它,然后使用toString
(它也方便地将radix
作为参数)转换回二进制字符串。
将数字除以10? – thefourtheye 2014-10-17 19:16:29
另外,你为什么要这个? – Cameron 2014-10-17 19:21:23
明显的问题:那不是二元的。这是只有数字1和0的小数。 – harold 2014-10-19 15:34:16