2014-10-17 110 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作爲參數)轉換回二進制字符串。