程式中位運算的妙用

2021-08-05 23:54:51 字數 1150 閱讀 9059

程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算說穿了,就是直接對整數在記憶體中的二進位制位運算。比如,and運算本來是乙個邏輯運算子,但整數與整數之間也可以進行and運算。舉個例子,6的二進位制110,11的二進位制是1011,那麼6 and 11的結果就是2(0010),它是二進位制對應位進行邏輯運算的結果(0表示false,1表示true,空位都當0處理,同1為1,其餘全為0)。位運算相較於其他計算符來講,由於是直接使用計算機的方式來處理資料,無疑會被計算機更快的識別處理,提高程式執行速度。 1

~

2

<<、>>

3

&

4

^

5

|

6

&=、^=、|=、<<=、>>=

以上是位運算的優先順序和種類。

下面舉一些位運算的小例子:

1.&的妙用

if((n&1) == 1)  

n&1是n和1做"按位與"運算,1的二進位制只有末位是1,所以n&1就是只保留n的末位(二進位制).n&1就表示了n的奇偶性.n若為偶數,其二進位制表示最後一位一定為0,所以與1相與得0,而奇數則相反,其二進位制最後一位一定為1,

所以與1相與得1,這樣就可以判斷乙個數的奇偶性,而不是使用%2的方法來判斷。

2.<< 和 >>的秒用

public class exercise

}

向左移相當於乙個數乘2,向右移相當於除2,例如上面的4(省略到只有四位0100),向左移一位,就變成了8(1000),而6(0110),向右移一位則變為了3(0011)。

3^(異或)的妙用

public class exercise3 

else

}}

異或的規則是同0異1,通常和》(無符號右移)搭配使用,>>表示有符號右移,如果該數為正,則高位補0,若為負數,則高位補1;>>>表示無符號右移,也叫邏輯右移,即若該數為正,則高位補0,而若該數為負數,則右移後高位同樣補0。int型別32位,無符號右移31位則只剩下符號位,進行異或便可知道兩數是不是同號。而且這樣寫最大的好處是不需要考慮數值越界的問題。

大概比較常用的有這幾個,以後再進行補充。

位運算」在程式開發中的妙用!

位運算 位運算子包括 與 非 或 異或 當兩邊運算元的位同時為1時,結果為1,否則為0。如1100 1010 1000 當兩邊運算元的位有一邊為1時,結果為1,否則為0。如1100 1010 1110 0變1,1變0 兩邊的位不同時,結果為1,否則為0.如1100 1010 0110 它適合用在多狀...

sql中位運算的妙用

資料庫採用1,2,4,8,16.等用數字標識 2的n次方 的狀態字段可以進行累加,對存在的幾種狀態進行組合,從而可形成各種組合狀態 例如 一條記錄該欄位原來的數字是,2,如我們想加上4,則可以用 update t user set iflag iflag 4 where userid 1 iflag...

位運算的妙用

位運算的操作 負數是按照補碼的形式參與按位與運算的 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.1為正,0為負 反碼的表示方法是 正數的反碼是其本身 負數的反碼是在其原碼的基礎上,符號位不變,其餘各個位取反.補碼的表示方法是 正數的補碼就是其本身 負數的補碼是在其原碼的基礎上,...