[英]C/C++ bitfields versus bitwise operators to single out bits, which is faster, better, more portable?
[英]C++ bitwise AND for single bits
我只有一個關於C ++中按位與的簡單問題。 我將其用於單個位(a&8,a&4,a&2,a&1等),我想獲得布爾值作為回報(如果倉位上有1)。
我可以將它除以一個數字(例如(a&8)/ 8),但是在我的代碼中看起來確實不是很好(特別是我正在使用數組和變量的長名稱)。
還有其他更好的編碼方法嗎?
提前致謝。
如果要明確,請與0進行比較:
const bool maskSet = (a & 8) != 0;
這是我所知道的最干凈的方法。 除法很奇怪,因為除法運算仍然使從整數到布爾值的隱式轉換成為可能。 比較運算符使其明確。
最好的方法是將表達式轉換為布爾值。 這樣可以提高可讀性:
bool result;
result = 0 != (a & 8);
可能不需要與0進行比較,因為編譯后的代碼將在變量b
寫入true
或false
。 但這避免了如下警告:
warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)
如果您不喜歡Yoda語音,則順序或比較參數可能會顛倒。 這種樣式可以幫助避免C編程語言中的意外賦值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.