Esse número é par ou ímpar? Uma maneira diferente de avaliar um número usando operadores binários.

David Vinicius
2 min readJul 31, 2022

--

Quando estamos iniciando na programação, uma dos primeiros problemas que aprendemos a resolver é verificar se um número é par ou ímpar. Esse é um dos fundamentos que utilizamos em diversos momentos na nossa caminhada como programador. Seja desenvolvendo algo em uma aplicação, ou até implementando uma solução no HackerRank.

Na maioria dos casos, para realizar esse tipo de avaliação, usamos o operador de módulo, que para grande parte das linguagem baseadas em C é o sinal de porcentagem (%), por exemplo:

O código acima verifica se o resto da divisão feito por 2 é igual 0. Caso seja verdadeiro, temos um número par, porque todo número par quando dividido por 2 deixa resto 0. Caso contrário, temos um número ímpar.

Está é a maneira mais comum de realizar esse tipo de verificação. Porém, existe pelo menos uma outra forma de realizar a mesma verificação sem utilizar o operador de módulo. Faremos a verificação se um número é par ou ímpar utilizando operadores bitwise.

Esse operadores trabalham a nível de bits, utilizando código binário como base. Para verificar se um número é par ou ímpar temos o seguinte exemplo:

Para conseguir entender o que está sendo feito no código, será necessário relembrarmos um detalhe importante sobre binários. Em binário, sabemos se um número é par ou ímpar pelo primeiro dígito da direita para esquerda. Se o dígito for igual a 0, quer dizer que é um número par, caso contrário é um número ímpar.

Fixamos o número 1 para essa operação por saber que todos os dígitos exceto o primeiro são iguais a 0 e em uma eventual comparação usando o operador AND, estaremos extraindo o primeiro dígito da direita para a esquerda. Dessa maneira, conseguiremos saber se é par ou ímpar.

Logo, na linha 2, utilizando o operador &(AND), em termos de bits, ele compara dois valores em binário e faz a operação AND em cada bit. Para ilustrar temos o que ocorre temos a seguinte imagem:

Operação de AND a nível de bits

Para cada coluna será realizada a operação de AND, resultando no valor binário “000”.

Como em Python temos que o valor booleano false é igual a 0, conseguimos verificar que o último dígito do número 2 em binário é igual a 0, dessa forma, podemos concluir que se trata de um número par.

Algo parecido irá acontecer para números ímpares, porém, o dígito resultante da operação será igual a 1.

Essa é uma maneira não tão usual de se verificar se um número é par ou não, porém, ela funciona. Espero que tenha gostado e até uma próxima.

--

--

David Vinicius
David Vinicius

Written by David Vinicius

Cristão, Programador, apaixonado por matemática e tentando escrever o que aprende.