operadores lógicos

Operadores lógicos y operadores a nivel de bits

Operadores lógicos y a nivel de bit

Otro ejemplo práctico de las operaciones lógicas, lo encontramos en los operadores lógicos y operadores a nivel de bit. Estos recursos están ampliamente presentes en los sistemas informáticos, tal como los de procesamiento de información o de programación de software.

Operadores a nivel de bit en programación de software


Los operadores a nivel de bit permiten la evaluación y la manipulación de bits específicos entre variables, aplicando las mismas operaciones booleanas.

AND   ($x & $y) Aplica la operación AND entre las variables $x y $y
OR      ($x | $y) Aplica la operación OR entre las variables $x y $y
XOR ($a ^ $b) Aplica la operación XOR entre las variables $x y $y
NOT   (~ $x) Invierte el valor de la variable $x

Por ejemplo, aplicando el operador AND entre los números 140 y 89, nos da como resultado 8:

operadores lógicos

Compuerta AND

Realmente no deberíamos mezclar el simbolo de las compuertas electrónicas dentro del marco del software. Sin embargo, debido a que la lógica es la misma, las usamos a modo de analogía para darle continuidad a la comprensión de las operaciones lógicas.

Llevado este concepto a un lenguaje de progamación como PHP, tendríamos algo como esto:

<?php

$x = 140;
$y = 89;

$resul = $x & $y; //Esta línea de código ejecuta el operador a nivel de bit AND y su resultado se carga en la variable $resul

echo $resul; //Mostramos en pantalla el resultado

?>

 

Operadores a nivel de bit en redes informáticas


Dentro del campo de las redes informáticas, las direcciones IP versión 4 son procesadas en formato binario por los sistemas de enrutamiento de paquetes. Esto hace que dispositivos tipo routers Cisco o Linux deban ejecutar la operación a nivel de bit AND, para decidir las rutas que deben seguir las señales (paquetes). De ese modo, despejan el número de la red y enrutan las señales hacía su destino.

Veamos lo anterior con el siguiente ejemplo:

operadores lógicos

Operación AND en tablas de enrutamiento

Tenemos una laptop, dos routers con sus interfaces eth0, eth1 y eth2 y un servidor de correo. Además de sus correspondientes direcciones de redes.

Tomando como referencia la imagen anterior, suponga que el Cliente necesita revisar su correo corporativo. El software instalado en su laptop inicia el proceso de conexión hacía la dirección IP destino 23.230.192.68, que es el Servidor de Correo.

El Router 1 recibe la señal de la laptop que va dirigida a la dirección IP 23.230.192.68. Entonces, el router usando la operación AND decide que el puerto por el que debe reenviar la señal es la interfaz eth1. Este procedimiento lo ejecuta así:

Tenemos los siguientes datos de la IP destino:

Dirección IP: 23.230.192.68
Máscara: 255.248.0.0 (máscara de 13 bits)

La misma dirección IP y máscara, en formato binario:

Dirección IP: 00010111.11100 110.11000000.01000100
Máscara1: 11111111.11111 000.00000000.00000000

Es aquí donde el Router 1 toma cada una de las máscaras de sus interfaces de red y le aplica la operación AND, hasta que la dirección de red destino le coincida con alguna de sus interfaces. Así es como el router “mira a través de la máscara”.

operadores lógicos

AND bit a bit. El router procesa la dirección IP destino 23.230.192.68 y la máscara de subred (declarada en la interfaz eth1) con el operador AND. Así, en cada 1 de la máscara se copia el bit de la dirección IP a la dirección de red.

Cuando el Router 1 aplica el operador AND, determina que la dirección de red a la que pertenece la dirección IP 23.230.192.68 (dirección ip del servidor de correo), es la 00010111.11100 000.00000000.00000000, ó 23.224.0.0, asociada al puerto eth1 en su tabla de enrutamiento. De ese modo direcciona la señal de la laptop por su intefaz de red eth1, y finalmente se establece la conexión entre el Cliente y el Servidor.

 

Más sobre direcciones IP en Wikipedia, aquí

Más sobre direccionamiento IP en Cisco, aquí

 

Operadores lógicos


Los operadores lógicos en la programación de software se emplean bastante para evaluar condiciones del tipo Verdadero (true) o Falso (false). Son imprescindibles al momento de evaluar si un valor cumple ciertas condiciones.

operadores lógicos

Tabla de verdad en los operadores lógicos

AND  – Ejemplo ->  $A AND $B = Evalúa que se cumplan las dos condiciones que une.

NOT   – Ejemplo ->  !$A True si $a no es True

OR      – Ejemplo ->  $A OR $B = Evalúa que se cumpla, al menos, una de las dos condiciones que une.

XOR   – Ejemplo ->  $A XOR $B = Evalúa que se cumpla una, y sólo una, de las dos condiciones que une.

Por ejemplo, el siguiente algoritmo emplea el operador lógico && (AND ó Y) para evaluar si la variable $edad se encuentra entre 0 y 18.

<?php

$edad = 14;

if ($edad >= 0 && $edad < 18 ){
echo "Aún está en la minoría de edad";
else {

echo "Es mayor de edad";

}

?>

Si la variable $edad es mayor que 0 Y menor que 18, se informa en pantalla que si es menor de edad (true). Si la condición no se cumple (false), entonces (else) se muestra en pantalla que es mayor de edad.

 

Tal vez le interese ver Construcción de un Sensor de Temperatura con Arduino, aquí.

1* Máscara de red: La máscara de red es semejante a un agujero en una hoja de papel, colocada sobre un texto. Entre más grande el agujero, más texto se puede ver. Del mismo modo, con la máscara de red se puede despejar la red a la que pertenece una dirección IP.

 

 

Comparte esto en
Publicado en Lógica Digital.

Deja un comentario

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