今天在看hashmap原始碼時發現有幾個沒見過的運算子 " ^","&","<<>>"。總結如下。
圖一:
以上**執行的結果為1和0;
你會發現運算的規則是:兩個數進行異位運算時,兩個變數值相同時,則值是0,其中乙個變數為0,則值是另外乙個變數的值。
圖二:
以上**執行的結果為3,2,1;
你會發現:第5行和第6行像除法是吧,這麼以為你就錯了。
異或的運算規則: a的值為1轉換成二進位制的值為1,b的值為2轉換成二進位制的值為10,然後將a的第一位數和b的第二位數對比,將a的第二位數和b的第二位數對比,以此類推。
int a = 01 int b = 10 參照圖1運算規則
運算結果為11;轉換成十進位制就是3;
位於運算子也是對兩個數的二進位製同位進行比較,兩個數的同位數的值同時為1則為1,否則為0;
如:10&2
10的二進位制:1010; 2的二進位制:0010;
值則為:0010=2;
無符左移運算子 是對乙個值向左移多少位。
如:
a的二進位制值:10100; 向左移兩位
值則為:101;
列印結果:5;
當然你也可以用數學解決:a/(2的b次方);
右移運算子 是對乙個值向最右邊加多少個0。
如:
a的二進位制值:10100; 向右移兩位
值則為:1010000;
列印結果:80;
當然你也可以用數學解決:a*(2的b次方);
邏輯運算子( 和 , 和 )
1.定義 邏輯運算子 邏輯運算子用於對布林型的資料進行操作,其結果仍是乙個布林型。2.基本運算 3.注意一些細節 短路與和與 3.1 運算子 和 都表示與操作,當且僅當運算子兩邊的運算元都為true時,其結果才為true,否則結果為false。3.2 當運算子 和 的右邊為表示式時,兩者在使用上還有...
C 中運算子 和 和 的區別
是邏輯與運算子,是邏輯或運算子,都是邏輯運算子,兩邊只能是bool型別 與 既可以進行邏輯運算,又可以進行位運算,兩邊既可以是bool型別,又可以是數值型別 if a b 如果 a 為 false 整個表示式就為 false,不再計算 b 的值了。if a b 如果 a 為 false 整個表示式就...
C 中運算子 和 和 的區別
簡介 是邏輯與運算子,是邏輯或運算子,都是邏輯運算子,兩邊只能是bool型別 與 既可以進行邏輯運算,又可以進行位運算,兩邊既可以是bool型別,又可以是數值型別 區別 if a b 如果 a 為 false 整個表示式就為 false,不再計算 b 的值了。if a b 如果 a 為 false ...