測試**在github
常見的位運算包括:與(&)、或(|)、非(~)、異或(^)、左位移(<<)、右位移(>>或》)
包含關係判斷
定義:
/** 0000 */
private static final int flag_one = 0x1;
/** 0010 */
private static final int flag_two = 0x2;
/** 0100 */
private static final int flag_four = 0x4;
/** 1000 */
private static final int flag_eight = 0x8;
/** 1000 */
private static int target1 = flag_one | flag_eight;
/** 1010 */
private static int target2 = flag_one | flag_two | flag_eight;
flag_one、flag_two、flag_four、flag_eight 二進位制的值分別為0000、0010、0100、1000
target1與target2為或運算結果
測試方法:
private static void test1()
result1、result2、result4、result8結果表示了target1與四個flag值的與運算
結果驗證位:
result1 = 1
result2 = 0
result4 = 0
result8 = 8
target1是flag_one與flag_eight的或運算結果,所以對應的result1、result8都不為0
原理:
1111 | 0000 = 1111
1111 & 0000 = 0000
1111 & 1111 = 1111
1010 | 0101 = 1111
1111 & 1010 = 1010
1111 & 0101 = 0101
a | b = c
c & a = a
c & b = b
變數值交換
測試方法:
private static void test3()
原理:a ^ a = 0
a ^ 0 = a
java位運算應用
1.判斷int型變數a是奇數還是偶數 a 1 0 偶數 a 1 1 奇數 2.求平均值,比如有兩個int型別變數x y,首先要求x y的和,再除以2,但是有可能x y的結果會超過int的最大表示範圍,所以位運算就派上用場啦。x y x y 1 3.對於乙個大於0的整數,判斷它是不是2的幾次方 x x...
位運算應用
位運算 針對整型 字元型,計算機會將它轉換為二進位制運算 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取模 ...