<< und >> sind shift-Operatoren.
Damit verschiebt man die Daten um eine bestimmte Anzahl Bits nach links oder rechts.

Beispiele:
unsigned char bla = 0xcb; //11001011

(bla << 1) ergibt: 0x0196 //00000001 10010110 (unsigned short!!!, ggf type-casten, um wieder unsigned char zu bekommen)
(bla << 3) ergibt: 0x0658 //00000110 01011000 (unsigned short!!!, ggf type-casten, um wieder unsigned char zu bekommen)
(bla >> 1) ergibt: 0x65 //01100101
(bla >> 4) ergibt: 0x0c //00001100

EDIT: Dies wird häufig benutzt, um bestimmte Bits in einem Register zu setzen/löschen:

einRegister |= (1 << EIN_BIT) | (1 << ANDERES_BIT);

setzt die Bits, die durch EIN_BIT und ANDERES_BIT gekennzeichnet sind (die entsprechende Bit-Nummer)