嵌入式與韌體
檢查輸入用暫存器in的位元5是否為1,下列何種C語言條件正確?
- Aif (in | (1 << 5))
- Bif (in == 5)
- Cif (in & (1 << 5))
查看答案與解析
正確答案:C. if (in & (1 << 5))
「in & (1 << 5)」會變成將位元5以外全部清為0的值,因此位元5為1時結果為32(非0即為真),為0時結果為0(假)。C語言中非0即為真,所以可直接作為if敘述的條件。若想讓結果為1或0,可寫成「(in >> 5) & 1」。若用OR,結果必定為非0,等於沒有檢查。
- A. OR的結果一定為非0,條件永遠為真。
- B. 這是在比較值是否為5,與位元5無關。
- C. 正確。將位元5以外清為0後檢視剩下的部分。