La misma diferencia uqe hay entre & y &&
& es la AND bitwise o bit a bit.
&& es la AND logica, es decir solo tomando como verdadero y falso.
https://en.cppreference.com/w/cpp/language/operator_alternativeEn tu ejemplo..
mode & MODE_CARDEMU
Observa si el bit de CARDEMU esta activo... Supongamos que MODE_CARDEMU es 0010 , si mode termina siendo 1010, te vas a quedar con : 0010, en este caso al ser distinto de cero es "verdadero" (logico)
Por otro lado tenes modeSE == 2, lo cual se va a evaluar como verdadero o falso (logico).
Luego tenes el AND logico entre estos dos.. ¿El bit de CARDEMU esta presente en mode y ademas modeSE es igual a 2?