*) denn bei a >>= 4 muss er ja wirklich schieben!
(Das Gelernte gilt offensichtlich nur bei _Konstanten_!)
Nein GCC ist schlauer als Du denkst
Er schiebt nicht 4 mal sondern dreht beide nibbles um (swap) und verundet das Ergenbnis mit 0x0F, braucht also nur 2 Takte und keine 4 ...

Gruß Sebastian