Инверсия чисел?

В одном учебнике встретил такой термин: Существует старый трюк с использованием побитового оператора НЕ — ~. Он преобразует число в 32-разрядное целое со знаком (signed 32-bit integer). Дробная часть, в случае, если она присутствует, отбрасывается. Затем все биты числа инвертируются.

  • Можно объяснить на простом языке, что значит "Затем все биты числа инвертируются"?

alert( ~2 ); 
alert( ~1 ); 
alert( ~0 ); 
alert( ~-1 );


Ответы (2 шт):

Автор решения: Эникейщик

Бит 0 заменяется на 1, а 1 на 0: 0010 → 1101.

→ Ссылка
Автор решения: HTMLProgrammer

Инверсия чисел - это побитовая операция, которая по сути делает вот что:
~a = -(a + 1).
Её часто используют в условиях вхождения подстроки в строку, так как если это вхождение не найдено, то indexOf вернет -1
Вот пример применения, но это не лучщий пример для повторения, так как код станет сложнее понимать Пример:

let index = 'test'.indexOf('y'); //index = -1
if(~index)
   alert('Есть');
else
  alert('Нет');

→ Ссылка