As vezes é necessário saber, via programação, se um número é par ou ímpar. Mas como fazer isso em JavaScript?
Método 1
const isOddOrEven = (number) => {
return number % 2 ? 'Is Odd!' : 'Is Even!';
}
console.log(isOddOrEven(3)); // Is Odd!
Nesse método, testamos a divisão por 2 do número passado, usando o operador %
, que em vez de retornar o resultado de uma divisão, ele retorna o resto
.
Qual a sacada? Todos os números pares são divisíveis por 2, ou seja, o resto da divisão de um número par por 2 é sempre 0.
Então caso essa operação retorne algum valor acima de 0, o número passado é ímpar.
Método 2
const isOddOrEven = (number) => {
return value & 1 ? 'Is Odd!' : 'Is Even!';
}
console.log(isOddOrEven(3)); // Is Odd!
Nesse método, utilizando do operador &
, que é um operador JavaScript da categoria bitwise ou "bit a bit".
Essa categoria trabalha com os valores no formato de base 2, ou seja, binários. Aquelas representações em 1s e 0s. (Ex: valor 5 em decimal é igual a 101 em binário)
Para operação to tipo bit a bit, o JavaScript converte por padrão todos os operandos para inteiros de 32 bits (Ex: 10100000000000000110000000000001)
Detalhe: caso o número convertido seja maior que 32 bits, os bits mais significativos são descartados, então não é recomendável usar operações bit a bit no JavaScript caso necessite usar números muito grandes, como cálculos com números primos.
Agora voltando a lógica do método...
O operador &
retorna 1 para cada posição de bit em que ambos os operandos tinham um bit 1.
Qual a sacada? Estamos comparando ali os números com o número 1, que em binário seria 00000000000000000000000000000001
, ou seja, apenas os números ímpares possuem o primeiro bit com valor 1, que é o único bit do número 1_(decimal)_ que também tem valor 1.
É isso!
São apenas dois métodos simples, mas o que eu queria passar aqui é a lógica de como resolver o problema de saber se um número é par ou ímpar.
Você também vai querer adicionar outras validações e muitos outros dilemas para deixar seu método super completo e a prova de quebra.
Mas o legal é entender como foram pensadas as lógicas para resolver problemas em programação, que podem ajudar na hora de resolver aquele seu problema de código que não é tão simples ou é muito específico ao contexto em que só você mexe.
Boa sorte!
Outros links:
Top comments (0)