在Javascript中,移位操作指的是將二進制位按位左移或右移,這是一種非常有用的操作方式。通過移位操作,可以將數值按位移動,相當于將數值乘以或除以2的冪次方。在本篇文章中,我們就來詳細介紹Javascript中移位操作的相關知識。
移位操作有兩種形式:左移和右移,分別用“<<”和“>>”符號表示。當使用左移符號“<<”時,相當于將數值的二進制位向左移動N位,最后N位補0。例如,5<<2的運算結果是20,它等價于5乘以2的2次方,即5*4=20。使用右移符號“>>”時,則相當于將數值的二進制位向右移動N位,最后N位丟棄。例如,8>>2的運算結果是2,它等價于8除以2的2次方,即8/4=2。
為更好的理解移位操作,我們可以舉一個例子。假設我們有一個數字6,它的二進制形式為“110”。現在我們要將其左移一位,即將其變為“1100”,相當于將6乘以2。那么,這個操作的結果是什么呢?我們可以通過如下代碼來驗證一下。
var a = 6;
var b = a<< 1;
console.log(b); //輸出12
在以上代碼中,我們定義了一個變量a,并將其賦值為6。接著,我們將a左移一位,并將結果賦值給變量b。最后,我們將b輸出到控制臺中,結果為12,與我們之前的計算結果相符。
除了左移和右移,Javascript還提供了一個無符號右移操作符“>>>”。相比于右移操作符“>>”,無符號右移操作符“>>>”不考慮符號位(正負號)。無論數值是正數還是負數,都將其二進制表示向右移動指定的位數,并在左側使用0填充。
再來看一個例子,假設我們有一個數字-13,其符號位為1,而它的二進制形式為“11111111111111111111111111110011”。現在我們要將其無符號右移一位,也就是將其變為“01111111111111111111111111111001”,結果是多少呢?讓我們看看下面的代碼。var a = -13;
var b = a >>>1;
console.log(b); //輸出2147483641
在以上代碼中,我們定義了一個變量a,并將其賦值為-13。接著,我們使用無符號右移操作符對a進行操作,并將結果賦值給變量b。最后,我們將b輸出到控制臺中,結果為2147483641,可以看出,無符號右移操作符將符號位也一并移動,沒有忽略掉。
總結一下,Javascript中移位操作分為左移、右移和無符號右移。左移將數值向左移動N位(最后N位補0),相當于對該數值乘以2的N次方。右移將數值向右移動N位(最后N位丟棄),相當于對該數值除以2的N次方。而無符號右移與右移類似,不同之處在于它無論數值是正數還是負數,都將其二進制表示向右移動指定的位數,并在左側使用0填充。上一篇python看會員視頻