Categorías: Algoritmos

Número par con operación AND a nivel de bits

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í:

100
001
___
000

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:

101
001
___
001

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:

11110100001001000000
00000000000000000001
____________________
00000000000000000000

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

111111111111111111111111
000000000000000000000001
________________________
000000000000000000000001

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 y Python, aunque se puede hacer en cualquier otro lenguaje que soporte esas operaciones.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
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/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.