前兩天看**的時候看到了運算 ^、<<、>> ,因為之前很少用到所以一時間不知道怎麼運算了 ,看了下資料,總結一下
1.首先先說說^(異或運算),先看**
public
static
void
main(string args)
那麼這個1是怎麼來的,我們要知道^、<<、>>等位運算子主要針對二進位制,算異或的時候相同的為0,不同的為1
2轉換成二進位制是0010
3轉換成二進位制是0011
所以0010^0011的結果就是0001轉換成十進位制是1 ,所以2^3=1
2.《向左位移,先看段**
public
static
void
main(string args)
在運算的時候同樣要把十進位制轉換成二進位制, 2的二進位制是0010 ,向左移3位後面用000不齊,結果是10000 二進位制的10000轉換成十進位制是16(從右往左分別是1,2,4,8,16,32….)
3>>向右位移,**如下
public
static
void
main(string args)
原理和左移是一樣的,先轉成二進位制0010,再向右側移動三位,向右側移動的時候在左側不齊0,移動幾位不齊幾位,移動後的二進位制是0000 轉成十進位制就是0了。
4.&運算 按位「與」的計算是把兩個數字分別寫成二進位制形式,然後按照每一位判斷,&計算中,只要有乙個是0就算成0
看下例子:system.out.println(1&2);
列印0 , system.out.println(1&1);列印1
下面解釋下原因
1的二進位制為:0001
2的二進位制為:0010
運算的結果為:0000 ->0
同理兩個1的&運算的二進位制結果為0001->結果為1
Java 中的位運算
移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2 2 2 完全相同。5 3 ...
Java 中的位運算
計算機中的原碼 反碼和補碼 移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2...
Java 中的位運算
移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2 2 2 完全相同。5 3 ...