android在編碼的時候經常使用到位運算,這裡以intent的flags為例。(檢視intent說明文件)
publicstaticfinalintflag_activity_new_task = 0x10000000;
publicstaticfinalintflag_activity_single_top = 0x20000000;
publicstaticfinalintflag_activity_multiple_task = 0x08000000;
再來看看1|2|4|8分別對應的二進位制數:
1 : 0001
2 : 0010
4 : 0100
8 : 1000
注意:它們通過「或運算」可以組成1~15的數,並且不會出現兩種或兩種以上的相同情況。
由這個特點,在程式中可以巧妙的使用,目前我發現android原始碼中常使用的幾個地方:
一、通過intent flags對應的值,可以將多種標誌通過「或運算」來進行組合,
以下**是intent新增標誌,使用到「或(|)」運算:
全文參考
Java 中的位運算
移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2 2 2 完全相同。5 3 ...
Java 中的位運算
計算機中的原碼 反碼和補碼 移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2...
Java 中的位運算
移位運算子 包括 右移 左移 無符號右移 例子 5 3 1 1111 1111 1111 1111 1111 1111 1111 1011 1111 1111 1111 1111 1111 1111 1111 1111 其結果與 math.floor double 5 2 2 2 完全相同。5 3 ...