В Javascript, если я выполняю побитовую операцию НЕ над десятичным целым числом 10:
~10
Я ожидаю, что он будет вычислять побитовое НЕ для двоичного целого числа следующим образом:
~1010 = 0101
Другими словами, я ожидал получить десятичное целое число 5. Вместо этого операция дает мне -11. (попробуйте в консоли)
~10 = -11
Если я проверю это более явно, просмотрев -11 и ~10 как двоичные целые строки:
parseInt(~10,10).toString(2)
"-1011"
parseInt(-11,10).toString(2)
"-1011"
Последовательный. Но я не понимаю. Может ли кто-нибудь объяснить мне, почему? Я предполагаю, что это как-то связано со знаком.
РЕДАКТИРОВАТЬ: Я нашел этот вопрос после публикации, это также помогло мне лучше понять это явление.