У меня есть код C, в котором я делаю следующее.
int nPosVal = +0xFFFF; // + Added for ease of understanding
int nNegVal = -0xFFFF; // - Added for valid reason
Теперь, когда я пытаюсь
printf ("%d %d", nPosVal >> 1, nNegVal >> 1);
Я получаю
32767 -32768
Ожидается ли это?
Я могу думать что-то вроде
65535 >> 1 = (int) 32767.5 = 32767
-65535 >> 1 = (int) -32767.5 = -32768
То есть, -32767.5 округляется до -32768.
Правильно ли это понимание?