Что означает '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
.)