&:按位與。例: 111 & 010 = 010
|:按位或。例: 111 | 010 = 111
~:按位非。例: ~010 = 101
^:按位異或。例:111 | 010 = 101
<<:左位移運算子。例:111 << 1 = 110; 111 << 2 = 100
>>:右位移運算子。例:111 >> 1 = 011;111 >> 2 = 001
1、乙個數乘以2的n次方:m * 2 ^ n <=> m << n
例:3 * 2 ^ 2 = 12 <=> 3 << 2 = 12
詳解:3的二進位制:11;左移兩位後:1100,及為12
2、乙個數除以2的n次方:m / (2 ^ n) <=> m >> n
例:12 / ( 2 ^ 2 ) = 3 <=> 12 >> 2 = 3
解析:12的二進位制:1100;右移兩位後:0011,及為3
3、判斷乙個數的奇偶性:n & 1 == 1 ? 」奇數」 : 」偶數」;
例:3 & 1 <=> 11 & 01 = 1;
4 & 1 <=> 100 & 001 = 0;
解析:奇數的二進位制末尾數必為1,所以按位與1的時候結果為 1;
偶數的二進位制末尾數必為0,所以按位與1的時候結果為 0;
4、兩數交換:x ^= y; y ^= x; x ^= y;
例:int x = 1;
int y = 2;
x = x ^ y; (1)
y = y ^ x; (2)
x = x ^ y; (3)
==> x = 2; y = 1;
解析:將上面步驟合一下:
y = y ^ (x ^ y) <=> y ^ x ^ y <=> y ^ y ^ x <=> 0 ^ x => x ; 此時就將 x 變數的值賦值給 y 變數了
x = (x ^ y)^ x <=> x ^ y ^ x <=> x ^ x ^ y <=> 0 ^ y => y;此時就將 y 變數的值賦值給 x 變數了
4、取絕對值:(1) 、(x ^ (x >> 31)) - (x >> 31) (2)、(x + (x >> 31)) ^ (x >> 31)
5、兩整數相加:
public int sub(int a, int b)
位運算應用
位運算 針對整型 字元型,計算機會將它轉換為二進位制運算 1 按位與 x y 對應位都為1時才為1 用途 取 保留1個數的某位 對應掩碼的對應位為1 其餘各位置1 2 按位或 x y 對應位都為0才為0,否則為1 用途 將1個數的某些位置1,其餘不變 3 按位異或 x y 對應位相同為0,不同為1 ...
位運算應用
1.判斷乙個數的奇偶性。x 1 101 1 1 2.判斷x是否是2的正整數冪。x x 1 100 011 0 3.取出乙個數的某些二進位制位。3.1.x 1 d 1 10101 1 3 1 00100 取第d位 3.2.x 1 d 1 10101 1 3 1 00101 取最後d位,x對2 d取模 ...
位運算應用
位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...