Qual a função do operador ~ (til) em JavaScript?

Em JavaScript, o operador “~” é conhecido como operador bitwise NOT (negação bitwise) ou complemento bitwise. Ele inverte os bits de um número em sua representação binária, transformando cada “0” em “1” e cada “1” em “0”.

Por exemplo, se você fizer ~5, o resultado será -6. Isso ocorre porque o número 5 em binário é representado como “00000101”. A negação bitwise irá inverter todos os bits, resultando em “11111010”, que representa o número -6 em complemento de dois.

Aqui está um exemplo prático:

let num = 5; // Representado como "00000101" em binário
let negacao = ~num; // Resultado será -6

console.log(negacao); // -6

É importante notar que o operador “~” só funciona com números inteiros. Se você usá-lo com um número de ponto flutuante, ele será convertido para um número inteiro antes da negação bitwise. Além disso, o operador “~” é de precedência muito alta, o que significa que ele será avaliado antes de outros operadores.