Du widersprichst Dir selbst. Ein Register ist standardmäßig unsigned.
int Variablen sind je nach Compilerimplemenation short (16bit) bzw. long (32bit). Außderdem nehmen die meisten Compiler einen int (Datentyp) als signed int an.
Wenn ich nun einen hohen 16bit Wert (Highbyte), der negativ ist, um 8 Bits nach rechts shifte, ist die einzige richtige Lösung, die Variable mit (unsigned int) umzutypisieren/=zu casten.
|