Was ich allerdings immer noch nicht begreife, ist, wieso wiederholte Multiplikationen oder shl-Befehle bei vorzeichenlosen Integertypen zum Ende in negative Werte einmünden (können).
Signed/Unsigned ist halt nur eine Darstellungssache. Wenn du mit unsigned int rechnest, aber am Ende das Ergebnis einem signed int zuweist, dann kann es halt passieren, dass das MSB als Vorzeichen (fehl-)interpretiert wird. Unter Umständen wird der Wert sogar noch sign-extended.