Sin importar el lenguaje de programación, cuando se requiere saber si un número es par o impar sin el operador de módulo, usamos la operación AND & a nivel de bits y comparamos el resultado con 0.

En este post te voy a explicar cómo es que funciona y por qué es confiable.

Explicación

Vamos a hacer un AND de los números usando el operador &, a nivel binario. Recuerda que AND devuelve 1 (o verdadero, true, etcétera) solo si los dos bits son 1, y 0 en cualquier otro caso.

Solo como recordatorio:

  • 0 AND 0 es 0
  • 0 AND 1 es 0
  • 1 AND 0 es 0
  • 1 AND 1 es 1

Entonces vamos a hacer la operación AND del número que vamos a probar, junto con el número 1. Así:

número & 1

Y luego vamos a comparar si el resultado de la operación es 0. En caso de que sea 0, el número es par. Ahora te explicaré la razón.

Ejemplo con números

Vamos con el número 4 que sabemos es par, y en binario es:

100

Fíjate en que su bit final (el que, si lo convertimos a decimal, valdría 1) está en 0.

Si el número es par, va a tener el último bit en 0. Si no, en 1.

Nota: aquí me refiero a “último bit” como el LSB, y no me estoy metiendo con cosas de big endian y little endian.

Cuando hacemos un AND entre el 4 y el 1 la operación binaria queda así:

Así que el resultado es 0. Si ahora probamos con el número 5 que tiene el LSB en 1 y en binario es:

101

Al hacer la operación AND:

El resultado es 1. Como es 1, se dice que no es par. Y efectivamente, el número 5 no es par.

Otros ejemplos

Hasta ahora lo hicimos con números pequeños, pero no importa cuál número sea, ya que solo nos importa el último bit. Aquí un ejemplo con la cifra de un millón que sabemos sí es par:

Aquí otro con el número FFFFFF que es 16777215, mismo que es impar:

Y así podemos hacer para varios números. Lo bueno es que no tenemos que convertirlos a binario, pues con el solo hecho de usar el operador & ya se está haciendo la operación a nivel binario.

Recuerda que ya he implementado esto en C, aunque se puede hacer en cualquier otro lenguaje que soporte esas operaciones.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 2,597 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: