Сдвиг вправо отрицательных чисел в C

У меня есть код 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.

Это понимание правильно?

Ответы на вопрос(6)

Ваш ответ на вопрос