Сдвиг влево с отрицательным счетчиком сдвига в Javascript

Вещь, которую я заметил в Javascript -a <<

 -1

Returns 0 when a = even.
Returns -2147483648 when a = odd.

Аналогично, разные значения возвращаются, когда-1 меняется на какой-то другой-ve число. Может кто-нибудь объяснить, какие битовые операции происходят под капотом? Или поведение не определено?

Спасибо

РЕДАКТИРОВАТЬ

Также не долженt нулевое заполнение правого сдвига, т.е.-2 >>> 1 вернуть ?7

-2 = 1110. После правого сдвига с нулевым заполнением должно получиться 0111 = 7

ноa = -2; console.log(a >>> 1); возвращается2147483647

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

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