位運算子的基本使用和注意事項
阿新 • • 發佈:2018-10-31
位運算子 |
||
運算子 |
運算 |
範例 |
<< |
左移 |
3 << 2 = 12 --> 3*2*2=12 |
>> |
右移 |
3 >> 1 = 1 --> 3/2=1 |
>>> |
無符號右移 |
3 >>> 1 = 1 --> 3/2=1 |
& |
與運算 |
6 & 3 = 2 |
| |
或運算 |
6 | 3 = 7 |
^ |
異或運算 |
6 ^ 3 = 5 |
~ |
反碼 |
~6 = -7 |
左移(<<)、右移(>>)和無符號右移(>>>),符號左側是要進行操作(移位)的數,要進行移位運算,首先要將十進位制數變成二進位制補碼(在原碼的基礎上按位取反後加一即可得到補碼); 符號右側的數代表要移動的位數,每移動一位相當於乘除2(右移相當於除2,左移相當於乘2),無符號右移和左移右移的區別在於無符號忽略了正負即操作完無論正負都變成正數。
與運算子(&):它的運算規則是 有0則0;&作為位運算子時的運算給則和作為邏輯運算子時規則有相似的地方,那就是如果把0看做是假,1看做是真,那麼只有都是真(都是1)的時候,才是1。
或運算子(|):它的運算規則是 有1則1;|作為位運算子時的運算給則和作為邏輯運算子時規則有相似的地方,那就是如果把0看做是假,1看做是真,那麼只要存在一個真(存在一個1)的時候就是真(1)。注意:我之前錯誤的認為或運算是加法運算(運算時把兩個二進位制補碼載入一起),結果錯的一塌糊塗。所以才寫了這片補課,作為查缺補漏。
異或運算子(^):它的運算規則 相同則0不同則1;
反碼(~):運算規則 按位取反;