RXEN ist eine #define irgendwo tief in den Headern (<AVR>/avr/include/avr/ioxxxx.h)
Es wird zu einer Konstanten aufgelöst, zB 3
Nachdem der Präprozessor über die Quelle gehuscht ist, steht noch da
(1<<3)
also eine 1 um 3 Stellen nach linke geschoben, also 1000 binär.
Man hat in dem Wert dadurch Bit 3 gesetzt. Mit | (bitweise oder) kann man mehrere solcher Werte -- oft auch als Maske bezeichnet -- überlagern.

Eine Maske, in der Bit 3 und 5 gesetzt sind, wäre dann (1<<3)|(1<<5).
Das geht in Java und C++ übrigens genauso, nur daß man in Java nicht direkt auf die Hardware greifen kann. Das Komplement erhält man mit ~ (nicht zu verwechseln mit ! (nicht))
~ dreht einfach alle Bits um 0 zu 1 und umgekehrt.
Eine Maske, in der alle Bits gesetzt sind ausser Bit 6 ist daher ~(1<<6)
Bit 6 in einer Variable zu löschen schreibt sich also so:
foo = foo & ~(1<<6);
oder kurz
foo &= ~(1<<6);

Für die arithmetischen Operationen hat man
| (oder)
& (und)
~ (not)
^ (exclusive or)
&=, |=, ^=

Für die logischen hat man
&& (und)
|| (oder)
! (nicht)
&&=, ||=