JS中的位操作符:“與,或,非,異或,左移,右移”


Javascript有算數操作符,賦值操作符,比較操作符,邏輯操作符,同時也有位操作符。

引子

先想一想,如下,該輸出什么答案?

console.log('5 & 1 :', ( 5 & 1 ));
console.log('5 | 1 :', ( 5 | 1));
console.log('~ 5:', (~5));
console.log('5 ^ 1 :', ( 5 ^ 1));
console.log('5 << 1 :', ( 5 << 1));
console.log('5 >> 1 :', ( 5 >> 1));

 

十進制轉二進制

先將值轉換成二進制。

 


5除以2余1,2除以2余0,1除以2余1。將余數倒過來,就得到5的二進制數101。 同理可得1的二進制數1。

與&

與運算法則:兩位同時為“1”,結果才為“1”,否則為0
5 & 1 = 1

或|

或運算法則:兩位其中一個為“1”,結果為“1”,否則為0
5| 1 = 5

非運算法則:單目運算符

二進制原碼:0000 0000 0000 0000 0000 0000 0000 0101 
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010 
有符號整數都是用補碼來表示,而補碼=反碼+1 
1.先求反碼:1000 0000 0000 0000 0000 0000 0000 0101 
2.再求補碼:1000 0000 0000 0000 0000 0000 0000 0110 
最高位代表符號位 1 表示負數,0 表示正數 
~5 = -6

 

異或^

異或運算法則:兩位不同,結果為“1”,否則為0
5^1 = 4

左移

左移運算法則:將數值向左移動若干位,用0補足
5<< 1 = 10

右移

右移運算法則:將數值向右移動若干位
5>>1 = 2


---------------------
作者:foreverling_ling
來源:CSDN
原文:https://blog.csdn.net/foreverling_ling/article/details/61417649
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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