Hallo,
ich möchte einen Portpin mit einem bestimmten Bit einer Variable
vergleichen. Das ganze 16 mal. Es wird immer der gleiche Pin mit jedem
Bit der 16-Bit-Variablen ein mal verglichen.
Die Abfrage soll in einer if-Abfrage erfolgen. Es soll immer dann ein
True ausgegeben werden, wenn das Bit der Variablen und der Portpin
unterschiedlich sind, also ein logisches XOR.
Wäre es eine logische UND-Verknüpfung, würde ich schreiben:
1 | if ( PINC&(1<<2) && variable&(1<<bitnummer) )
|
Laut meinem C-Buch gibt es keine logische XOR-Verknüpfung, nur eine
Bitweises XOR.
Wie könnte man das Problem lösen? Ich habe mir eine mögliche Lösung
ausgedacht, finde es aber "unschön". Hat jemand eine Idee, wie man des
Problem eleganter lösen könnte.
Meine Idee wäre:
1 | if ( (PINC&(1<<2) && !(variable&(1<<bitnummer))) || (!(PINC&(1<<2)) && variable&(1<<bitnummer)) )
|
Danke und Gruß