詳解位運算符的一些特點


我們都知道位運算符比正常的運算符速度要快,但是為什么會快呢?首先我們正常的運算符也是通過計算機通過位運算調用棧來實現的。

那么javascript位運算符有哪些呢?

1.          &      按位與                  

2.          |        按位或

3.          ^       按位異或

4.          ~      取反

5.    >>     按位左移

6.         >>     按位右移

 

說明:

(1)位運算符中除 ~ 外,均為二目運算符,即要求出側各有一個運算量。

(2)運算早只能是整型或字符型的數據,不能為實型數據。

 

1.按位與       &

左值與右值都為true,則為true,否則就為false。

console.log(5&7);//5 首先我們先把5跟轉成2進制,2進制是逢二進一,什么意思呢?如下圖,得到的總數就是  1+0*(2*1)+1*(2*2)=5=101,同理可以得到7=1+1*(2*1)+1*(2*2) =111  

那么根據位運算的道理,兩個都要一樣才為true,否則為0,那么5&7          得到的就是       101    &    111         ==101        = 5 

2.按位或      |

左值與右值只要有一個為true,則為true,否則就為false。

console.log(5|7);//7  

 

console.log(5|7);//7 首先我們先把5跟轉成2進制,2進制是逢二進一,什么意思呢?如下圖,得到的總數就是  1+0*(2*1)+1*(2*2)=5=101,同理可以得到7=1+1*(2*1)+1*(2*2) =111  

 

那么根據位運算的道理,只要一個為true,就為1,否則為0,那么5&7          得到的就是       101    |    111         ==111        = 7 

3.按位異     ^

若參與計算的兩個二進位為同號則為0,異號則為1

console.log(true ^ true);//0          console.log(true ^ false);//1        console.log(false ^ false);//0    console.log(false ^ true);//1

 

console.log(5^7);//2 首先我們先把5跟轉成2進制,2進制是逢二進一,什么意思呢?如下圖,得到的總數就是  1+0*(2*1)+1*(2*2)=5=101,同理可以得到7=1+1*(2*1)+1*(2*2) =111  

 

那么根據位運算的道理,兩個同號就為0,異號就為1,那么5^7          得到的就是       101    ^    111         ==010        =  2 

4.按位取反     ~

console.log(~2.5);//-3                取反之后向下取整

 

5.按位左移     <<

按位左移相當於      *2^n        2的n次方       並且向下取整

console.log(5<<2);//20              5*x2*2=20      

 

6.按位右移     >>

按位右移相當於      /2^n        除以2的n次方       並且向下取整

console.log(5>>2);//1              5*/(2*2)=1.25    向下取整為    1  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM