Zitat:
Original geschrieben von kikakater
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.
|
Also wenn ihr hier schon Haare spaltet:
Signed oder Unsigned ist reine Interpretationssache, der Inhalt der Speicherstelle schaut immer gleich aus.
Ein Int ist immer so breit wie ein Register des Prozessors auf den compiliert wird, mindestens aber 16Bit. Auf einem 8Bitter also 16Bit, auf einem 16Bitter 16Bit, auf einem 32Bitter 32Bit und auf einem 64Bitter 64Bit. Das macht die Ints ja so "interessant"...
<OT>
Was machst du aber wenns wie bei Java keine unsigned-type gibt?
</OT>
mfG
Clystron