Vermutlich kann der ka 8bit prozessor nur 16bit variablen verarbeiten...
Daran ist dann aber in diesem Fall nicht der Controller schuld sondern der C-Compiler, der die Anweisung nicht korrekt in Assembler-Befehle umsetzt. Denn prinzipiell kann auch ein 8-Bit Controller nahezu beliebig große Zahlen addieren, sofern man ihn richtig programmiert.


Ich würde also erstmal einen Blick auf den erzeugten Assembler-Code werfen, um herauszufinden was der Compiler da falsch macht. (und die shift-Funktion ggf. als inline-Assembler selbst schreiben)