Java位運算應用

2021-08-28 06:36:17 字數 1286 閱讀 9921

測試**在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取模 ...