我已經11個標誌定義爲:最有效的方法,如果標記被一個整數設置
#define F1 1
#define F2 2
#define F3 3
#define F4 4
...
#define F11 11
在一些函數然後創建的整數,其可以包括任一這些標記的,例如:
int a = (1 << F1) | (1 << F5) | (1 << F11) | (1 << F8);
然後,這被傳遞到一個函數,該函數需要解碼哪些標誌被設置,以設置特定寄存器中的特定位。所以我的問題是,什麼是檢查設置哪個標誌的最有效的方法。現在我有11如果像:
void foo(int a)
{
if ((a & (1 << F1)) >> F1) {
// Set bit 5 in register A.
}
if ((a & (1 << F2)) >> F2) {
// Set bit 3 in register V.
}
if ((a & (1 << F3)) >> F3) {
// Set bit 2 in register H.
}
if ((a & (1 << F4)) >> F4) {
// Set bit 1 in register V.
}
// And so on, for all 11 flags.
}
P.S. 這是一個8位微控制器。
@ M.M是的,你是對的。我修好了它。 – user1806687