Javascript тильда (~) приводит данное значение к своему дополнению - все биты инвертированы.
Это все, что делает тильда. Это не знак самоуверенности. Не добавляет и не вычитает любое количество.
0 -> 1
1 -> 0
...in every bit position [0...integer nbr of bits - 1]
На стандартных процессорах для настольных ПК, использующих языки высокого уровня, такие как JavaScript, арифметика со знаком BASE10 является наиболее распространенной, но имейте в виду, что она не единственная. Биты на уровне ЦП подлежат интерпретации на основе ряда факторов. На уровне «кода», в данном случае JavaScript, они по определению интерпретируются как 32-разрядное целое число со знаком (давайте оставим поплавки вне этого). Думайте об этом как о кванте, эти 32-битные представляют много возможных значений одновременно. Это полностью зависит от конвертирующего объектива, через который вы их просматриваете.
JavaScript Tilde operation (1's complement)
BASE2 lens
~0001 -> 1110 - end result of ~ bitwise operation
BASE10 Signed lens (typical JS implementation)
~1 -> -2
BASE10 Unsigned lens
~1 -> 14
Все вышеперечисленное верно одновременно.