Причина этого заключается в том, что использование побитового НЕ инвертирует все биты значения. Если вы сохраняете значение 1 в 8-битном целом со знаком, вы сохраняете двоичное значение 00000001. Если вы применяете побитовое НЕ, вы получаете 11111110, что для 8-битного целого со знаком является двоичным значением для - 2.

ascript, когда я делаю это

var num = 1;

~ num == -2

почему ~ num не равно 0

в двоичном 1 хранится как 1 ... таким образом, не 1 должен быть 0

или он хранится как 0001, поэтому не 0001 будет 1110

Я думаю, что я что-то упустил ... может кто-то прояснить это

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

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