Primero, es importante entender qué son los códigos binarios y cómo funciona su sistema, debido a que éste, es el lenguaje principal que utilizan las máquinas para su funcionamiento.
El sistema binario, se origina hace muchos años atrás, no lo creó una
sola persona, sino que se fue desarrollando a medida de que varios matemáticos
y lógicos inventaran nuevas formas de lenguaje, cómo Francis Bacon, que fue un
hombre que entre los años 1500 y 1600, quiso enviar mensajes en un código
secreto, que en realidad se trataba del código binario, con el propósito de
evitar que el contenido de los mensajes más sensibles cayese en las manos
inadecuadas, o, el propio George Boole, un matemático muy importante que
construyó las bases de la lógica computacional nacido en los años 1800, que
construyó a su desarrollo con su Álgebra proposicional.
¿Pero quien concretamente lo escribió por primera vez?
La base matemática que sostiene el sistema de numeración binario
utilizado por nuestros dispositivos electrónicos fue descrita por primera vez
por el matemático alemán Gottfried Wilhelm Leibniz en el siglo XVII, pero,
sorprendentemente, si queremos conocer su origen debemos remontarnos mucho más
atrás en el tiempo. Y es que los primeros números binarios proceden del ‘I
Ching’, una obra clásica de origen chino cuyos primeros textos están datados
entre los años 1200 y 1000 antes de Cristo.
En la época del siglo XVII el español Juan Caramuel y Lobkowitz fue el
primer matemático que elaboró un estudio formal de los sistemas numéricos que
no recurrían a la base 10, definiendo el sustrato sobre el que poco después, a
finales del siglo XVII, el alemán Gottfried Wilhelm Leibniz desarrolló la base
matemática del sistema binario moderno.
El sistema binario de numeración solamente utiliza dos símbolos: 0 y 1. De ahí su nombre. El sistema decimal, que nos resulta más familiar, se basa en los números que van del 0 al 9. En el sistema binario, las diez unidades del sistema decimal se expresan como sigue:
Decimal Binario:
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
Un código binario y su sistema de numeración tienen dos características: la posición y el valor que se le asigna a esa posición. Recordarán por ejemplo, cuando aprendíamos los números decimales, que había unidades, decenas, centenas, millares, etc. Entonces de la misma forma, los códigos binarios ó también llamados sistemas de numeración binario, presentan un arreglo similar.
Durante siglos han existido diferentes versiones de codificación
binaria, y se han utilizado en una variedad enorme de contextos.
Por ejemplo, el Código Braille usa protuberancias elevadas y no elevadas
para transmitir información a los ciegos, el Código Morse usa señales largas y
cortas para transmitir información, y el código binario de números utiliza
conjuntos de 0 y 1 para representar letras o estados eléctricos (1 encendido, 0
apagado).
Las compuertas lógicas utilizan el código binario para poder representar valores en sus entradas y proporcionar resultados. Las compuertas lógicas son los bloques con los que están construidos los flip-flops, sumadores, multiplexores, multiplicadores, decodificadores, registros (memorias), registros de desplazamiento (módulos de comunicación serial), etc. A su vez, estos bloques más complejos forman sistemas como procesadores, memorias, periféricos y unidades de control que son el principio de funcionamiento de los microprocesadores y los microcontroladores.
¿Qué usos tiene el sistema binario?
El código binario es imprescindible para lanzar textos, cifrar mensajes y generar información en informática que posteriormente se aprecia de manera visual a través de una pantalla. En muchas webs nos muestran cómo pasar del código binario a letras, es decir, podemos introducir el texto que deseemos y conseguir ese mismo mensaje en este lenguaje. Además, podemos tener en cuenta las siguientes aplicaciones en distintas áreas:
-Programación de microprocesadores.
-Cifrado de información confidencial.
-Transferencia de datos de un sistema informático a otro.
-Protocolos de comunicación digital informática.
Éste, se caracteriza por lo siguiente:
Emplea dos unidades cualesquiera (1 y 0 en el caso del código binario)
para representar información concreta mediante secuencias específicas de dichos
dígitos. Siempre deben ser dos, de valores totalmente distinguibles y
mutuamente excluyentes (no puede haber 1 y 0 a la vez).
Representa la base de los sistemas informáticos y computacionales, en
los que una secuencia de ocho bits constituye un byte de información,
correspondiente a una letra, número o carácter.
Permite traducir cualquier dato expresado en notación decimal,
hexadecimal u octal, entre otros sistemas de notación de la información (ASCII,
etc.).
Permite la lectura de condiciones reales y materiales cuyos estados
físicos puedan ser uno u otro: polaridad magnética, voltaje, etc.
También se utiliza en la codificación de las variables en cualquier
lenguaje de programación. Como por ejemplo, C/C++, el lenguaje Arduino, el
lenguaje MBED, etc. Por ejemplo, los tipos básicos de variables en C serian:
char – 8 bit’s, con signo, valores desde -127 hasta +128.
unsigned char – 8 bts, sin signo, y con valores de 0 a 255.
int (dependiendo del procesador, 16, 32, 64 bits).
unsinged int (también desde 16 hasta 64 bits).
etco: polaridad magnética, voltaje, etc.
Agrupaciones de los números binarios en la informática:
Los códigos binarios se agrupan para poder ser manejados de una mejor
manera. Por ejemplo, la cantidad mínima de información que se puede representar
en un sistema binario es el bit. Pero también existen la agrupación de 4 bits,
se llama nibble. Si agrupamos 8 bit o 2 nibble, ya se llama byte y así
sucesivamente.
Bit:
Un bit, es la cantidad mínima de información que se puede representar en
un sistema digital. Sólo puede valer 0 o 1. Verdadero o Falso.
Nibble:
Un nibble es la agrupación de 4 bits. Este puede representar a todas las
combinaciones con 4 bits, que son 16 combinaciones posibles.
Byte:
Un byte es la agrupación binaria más común y ocurre cuando se agrupan
8 bits. Un byte es muy importante debido a que al inicio, los
procesadores eran de 8 bits (hubo incluso procesadores de 4 bits). Por lo
tanto, la información o los resultados se guardaban en memorias de 8 bits para
ser más eficientes. En un byte de información se pueden guardar variables del
tipo char. El código ascci, es una codificación binaria que puede ser guardada
en chars.
Para las variables del tipo int, se requieren de entre 2 y 4 bytes
dependiendo de la arquitectura de los procesadores.
Kbyte :
Un Kbyte es la agrupación de 1000 bytes. Aunque algunos autores incluso
mencionan que son 1024 bytes. Dependiendo de la agrupación, ambas
consideraciones pueden ser igualmente validas.
Mbyte:
Un Mbyte es la agrupación de 1 millón u 8 millones de bits.
KBit, MBit y GBit
El Kbit es distinto al kbyte, en el sentido que representa sólo 1000
bits. Es una métrica utilizada en los protocolos de comunicación digital que
son seriales. Dado que los datos se transportan uno a la vez, es más
recomendable agruparlos en bits, en lugar de bytes. Esta medida se utiliza
mucho por ejemplo para medir la velocidad del internet.
Generalmente pensamos que los kbits son 1000 bytes, pero esto es
incorrecto. Cuando nuestros planes de internet dicen que tenemos 4GB, pensamos
en 4 mil millones de bytes, pero en realidad son 4 mil millones de bits.
Codificación:
A pesar de que existen diferentes métodos de codificación hacia el
código binario, como el código BCD, que es muy utilizado para poder representar
a los números de un reloj de tiempo real (en la electrónica de sistemas
embebidos), pero, el comúnmente utilizado es el sistema ASCII, el cual,
podremos observar en la siguiente imagen.
Finalmente, la importancia del código binario recae en que, para un
informático y un usuario promedio es importante conocer el binario, ya que como
ya se dijo, los microprocesadores sobre los que se programan funcionan a bases
de señales binarias. Sin el entendimiento total, habría una brecha para el
total manejo de la tecnología.
Es importante entender que sin dicho lenguaje, la tecnología no fuera la misma que conocemos hoy en día, una persona, como ingeniero o futuro ingeniero tiene la obligación y necesidad de conocer la historia y las bases que conforman la tecnología actual, para desempeñarse al máximo en su carrera.