Also hier liest er PB aus. Dann hat er 00000000. Dann rechnet er mit &, das sollte 00001000 ergeben. ! hieße dann, 11110111
Nehemen wir an PORTB ist 0xff (0b11111111) also wir haben 8 Eingänge (alle Pins dieses Ports werden mit einem Pullup auf High (+ Pol) gezogen, PINB ist deshalb auch 0xff). Die an den Pins angeschlossenen Tasten ziehen die jeweilige Pin auf Masse, das zugehörige Bit in PINB wird dadurch 0. (In diesem Beispiel ist eine Taste an Pin 3 angeschlossen, also ist, wenn sie gedrückt ist, PINB 0b11110111 = 0xf7)
Mit if(!(PINB&(1<<PB3))) fragen wir jetzt nur PB3 in PINB ab und negieren das Ergebnis, da PB3 ja 0 ist, wenn die Taste gedrückt ist und die bedingte Anweisung ja nur ausgeführt wird, wenn der Ausdruck in den Klammern true ist.
if(!(PINB&(1<<PB3))) würde heißen: if(!(0b11110111 & (1 << 3))), also if(!(0b11110111 & 0b00001000)), 0b11110111 & 0b00001000 gibt 0 und !0 gibt 1, so kann man also feststellen, ob die Taste gedrückt ist.