Причина этого заключается в том, что использование побитового НЕ инвертирует все биты значения. Если вы сохраняете значение 1 в 8-битном целом со знаком, вы сохраняете двоичное значение 00000001. Если вы применяете побитовое НЕ, вы получаете 11111110, что для 8-битного целого со знаком является двоичным значением для - 2.
ascript, когда я делаю это
var num = 1;
~ num == -2
почему ~ num не равно 0
в двоичном 1 хранится как 1 ... таким образом, не 1 должен быть 0
или он хранится как 0001, поэтому не 0001 будет 1110
Я думаю, что я что-то упустил ... может кто-то прояснить это