什麼是管道等於運算子(=)?
開源中遇到過管道等於運算子(|=)的開發者程式庫程式碼可能想知道它的意思。這個運算子經常被誤認為是邏輯賦值,它包含重要的位元 OR 運算。
理解位元 OR
管道等於運算子 |= 的工作方式與 = 相同。在下面的程式碼中, |= 運算子將defaults 的原始值與常數DEFAULT_SOUND 結合:
notification.defaults |= Notification.DEFAULT_SOUND;
此運算相當於:
notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;
其中|表示位元OR 運算子。
常數遮罩中的位元OR
在提供的範例中,常數DEFAULT_SOUND、DEFAULT_VIBRATE 和DEFAULT_LIGHTS 是2 的冪次方:
[&SO&E]DEFAUL = 1 預設振動 = 2 (1 DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1 這允許使用位元或來新增或刪除標誌。例如:int myFlags = DEFAULT_SOUND |預設振動; // 001 | 010 = 011DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1 新增另一個標誌:myFlags |= DEFAULT_LIGHTS;DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1 ; ]簡單地附加一個新標誌。測試標誌存在
位元與運算子(&) 測試是否有標誌:boolean hasVibrate = (DEFAULT_VIBRATE & myFlags) != 0;DEFAULT_SOUND = 1 DEFAULT_VIBRATE = 2 (1 如果結果是非零,則標誌已設定。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3