色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript位移運算

劉海燕1年前7瀏覽0評論

今天我們來講一下關于JavaScript位移運算的知識。位移運算是指將一個數的所有二進制位向左或向右移動一定的位數,移位后的空缺位以0來補足。

下面,我們來看一些具體的例子:

console.log(10 << 1);  // 20
console.log(10 >> 1);  // 5
console.log(-10 >> 1);  // -5
console.log(-10 >>> 1);  // 2147483643

左移運算符(<<)用來將一個數的二進制位向左移動一定的位數,右移運算符(>>)用來將一個數的二進制位向右移動一定的位數,向左移動就相當于將數乘以2的n次方,向右移動就相當于將數除以2的n次方(其中n為移動的位數)。

需要注意的是,在位移運算中,符號位也會參與移位運算。如果是正數,則空缺位補0,如果是負數,則空缺位補1。

上面的例子中,第一個console.log(10<< 1)將10向左移動1位,即變為10100(二進制),轉換為10進制即為20。第二個console.log(10 >>1)將10向右移動1位,即變為101(二進制),轉換為10進制即為5。第三個console.log(-10 >>1)將-10向右移動1位,即變為11111111111111111111111111111011(二進制),由于符號位為1,所以空缺位補1,即變為11111111111111111111111111111101(二進制),轉換為10進制即為-5。第四個console.log(-10 >>>1)將-10向右移動1位,空缺位補0,即變為0111111111111111111111111111101(二進制),轉換為10進制即為2147483643。

當然,還有無符號右移運算符(>>>),它與右移運算符有些不同。它忽略符號位,空缺位一律以0填充。這樣,負數右移后的值會變為正數。我們來看第四個例子,因為-10在計算機中表示為11111111111111111111111111110110(二進制),所以經過無符號右移1位后的值為0111111111111111111111111111101(二進制),由于符號位已經被丟掉了,所以轉換為10進制之后變為了2147483643。

最后,再來看一下移位運算符的一些注意點:

1. 移動的位數必須是非負整數。

2. 移動的位數如果超過了32位,在32位的效果也是不會發生變化的。

3. 對于32位無符號整數來說,左移一位相當于乘以2,右移一位相當于除以2,無符號右移也相當于除以2。

總之,在掌握位移運算的基本原理之后,我們就可以在實際的編程工作中靈活運用它,提高我們的編程效率。