Что означает 'x < < ~ y 'представляют в JavaScript?
Я понимаю, что побитовая операция SHIFT делает это:
x << y AS x * 2y
И оператор тильды ~:
~x AS -(x+1)
Итак, я предполагаю следующее:
5 << ~3 AS 5 * 2-4 or 5 * Math.pow(2, -4)
Это должно привести к 0.3125.
Но, когда я запускаю 5 << ~3, это приводит к 1342177280.
Что такое пошаговое объяснение? Как и почему эта комбинация операций приводит к 1342177280 вместо 0.3125?
(Этот вопрос похож на Stack вопрос с переполнением Что такое побитовые операторы? относительно побитового оператора SHIFT.)