Negative Zahlen in C nach rechts verschieben
Ich habe C-Code, in dem ich Folgendes mache.
int nPosVal = +0xFFFF; // + Added for ease of understanding
int nNegVal = -0xFFFF; // - Added for valid reason
Nun, wenn ich es versuche
printf ("%d %d", nPosVal >> 1, nNegVal >> 1);
Ich bekomme
32767 -32768
Wird das erwartet?
Ich kann mir sowas schon denken
65535 >> 1 = (int) 32767.5 = 32767
-65535 >> 1 = (int) -32767.5 = -32768
-32767.5 wird also auf -32768 gerundet.
Ist dieses Verständnis richtig?