位運算簡要應用

2021-10-01 17:52:10 字數 1311 閱讀 3661

&:按位與。例: 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,則該位...