Google+ Seguidores

viernes, 15 de diciembre de 2017

Trabajando con Números Binarios y Operadores Lógicos en Python

Introducción:

Los seremos humanos usamos los números día a día, desde hace siglos, los números se han vuelto una parte muy importante en nuestra vida diaria. Desde que somos niños nos enseñan a contar, sumar, restar..., las cosas básicas. 

Existen una gran variedad de sistemas numéricos y de numeración, y nuestras computadoras solo saben manipular uno, el sistema binario. A nuestras computadores no les enseñaron igual que a todos nosotros, nuestros equipos no tienen ninguna noción de números, excepto "verdadero" o "Falso", 1 o 0.

En este articulo aprenderemos a usar números binarios en Python, como convertirlos a decimales (y viceversa),  y cómo hacer operaciones con ellos.

Para realizar los ejemplo de hoy, no es necesario ningún modulo externo a la librería estándar de Python. Python pueden trabajar con números binarios muy bien.

Sistema Binario:

El sistema binario, es un sistema de numeración en el que los números son representados por dos cifras: ceros y uno (0 y 1). Es el sistema utilizado por las computadoras debido a que estas trabajan internamente con dos niveles de voltaje,por lo cual su sistema de numeración natural es el sistema binario.


En informática, un número binario puede ser representado por cualquier secuencia de bits (dígitos binarios), que suelen representar cualquier mecanismo capaz de usar dos estados mutuamente excluyentes. Las siguientes secuencias de símbolos podrían ser interpretadas como el mismo valor numérico binario:
1010011011
¦¦¦¦¦¦
xoxooxxoxx
ynynnyyny

Mientras que en el sistema de numeración decimal se usan diez dígitos (diez símbolos), en el binario se usan solo dos dígitos, el 0 y el 1. Un bit o dígito binario puede representar uno de esos dos valores: 0 o 1.

Es muy fácil de comprender, un bit esta encendido (1) o apagado (0).

Para representar números más altos que uno, se debe usar una secuencia de bits. Una secuencia de 8 bits puede almacenar números mucho más grandes, esta secuencia a de 8 bits es denomina byte.
Imagen relacionada

Números Binarios:

binario

Números binarios y su representación decimal.

Veamos eso en la practica:

int('00', 2)
Out[1]:
0

int('01', 2)
Out[2]:
1
int('10', 2)
Out[3]:
2
int('11', 2)
Out[4]:
3
int('100', 2)
Out[5]:
4
int('101', 2)
Out[6]:
5


Supongo que conocen el método int() para la conversión de datos a enteross. El segundo parámetro le dice a Python  que tenemos un un numero basado en 2 elementos.

Para convertir un byte (8 bits) a decimal, debemos escribir una combinación de 8 bits en el primer parámetro. 


int('00010001', 2)
Out[7]:
17
int('1111111', 2)
Out[8]:
255

¿Cual es la magia detrás de todo esto? Cada dígito (De derecha a izquierda) se multiplica por la potencia de 2.

El número '00110010' sería (0 x 2 ^ 0) + (1 x 2 ^ 1) + (0 x 2 ^ 2) + (0 x 2 ^ 3) + ( 1 x 2 ^ 4) + ( 1 x 2 ^ 5) + (0 x 2 ^ 6) + (0 x 2 ^ 7) = 32 + 16 + 2 = 50.

El número  '00101010' sería (0 x 2 ^ 0(1 x 2 ^ 1) +  (0 x 2 ^ 2) + (1 x 2 ^ 3) + (0 x 2 ^ 4) + (1 x 2 ^ 5) + (0 x 2 ^ 6) + (0 x 2 ^ 7)  = 42.

Con la practica diaria, se nos hará muy fácil.


Operadores lógicos: 

inputA =  int ( '0101' , 2 ) 
 
print("Antes de cambiar: " + str ( inputA ) + " " + bin ( inputA ))
print("Después de cambiar en binario: " + bin ( inputA <<  1 ))
print("Después de cambiar en decimal : " + str ( inputA <<  1 ))
Antes de cambiar: 5 0b101
Después de cambiar en binario: 0b1010
Después de cambiar en decimal : 10

Antes de cambiar (0,1,0,1) tenemos el número 5. Después del cambio (1,0,1,0) tenemos el número 10. En python puede usar el operador bitwise left (<<) para desplazarse hacia la izquierda y el operador bitwise right (>>) para desplazarse hacia la derecha.

Operador AND:

Al usar el operador "and", si las dos entradas son positivas, la salida sera positiva:

inputA =  int ( '00100011' , 2 )    # define la entrada de secuencia binaria A 
inputB =  int ( '00101101' , 2 )    # define la secuencia binaria inputB 
 
bin( inputA and inputB )
Out[10]:
'0b101101'


Operador OR:

El operador or (|) verifica las dos entradas, si al menos una entrada es positiva la salida sera positiva:


inputA = int('00100011',2)
inputB = int('00101101',2)

print(bin(inputA))    
print(bin(inputB)) 
print(bin(inputA | inputB))
0b100011
0b101101
0b101111


Bueno, una explicación breve, pero muy importante, y es algo que debemos de saber.

Te invito a que sigas investigando, y aprendiendo. Comparte tu experiencia con nosotros dejando un buen comentario.

Mi nombre es Luis y fue un placer compartir mis conocimientos con todos ustedes :D.

3 comentarios :
Write comentarios
  1. Muy buenos dias matavillado por esta publicasion mui intetesante y me digo que sera lo que no se puede hacer con python

    ResponderEliminar
  2. Hola Luis, que te parece esta noticia:
    https://www.redeszone.net/2017/12/18/python-excel/
    Slds

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .