Programar fácil con Arduino

Programar fácil con Arduino, entiende cómo funciona el mundo.

  • Blog
  • ¿Quién soy?
  • Podcast
  • Curso Arduino [GRATIS]
  • Curso Domótica [GRATIS]
  • Acceder
Usted está aquí: Inicio / Electrónica / Sistema de numeración binario

Sistema de numeración binario

Danilo Muñoz Jaramillo

Seguro que has escuchado más de una vez, hasta en las películas, hablar del sistema de numeración binario. Que es el lenguaje de las máquinas, que son extraños unos y ceros (1 y 0), que es la forma de comunicación de los ordenadores, y muchas cosas más.

Es difícil imaginarse el por qué un uno (1) y un cero (0) o un conjunto de ellos, pueden lograr las maravillas que la electrónica y la programación nos ofrecen actualmente. Es decir toda la información que conocemos se debe transformar a números, a líneas enteras de ceros y unos.

Si alguna vez te preguntaste cómo puede ser eso posible y quieres conocer un poco más de dónde viene todo esto, quédate porque en este artículo conocerás las bases del sistema de numeración binario y utilizaremos el código binario, estos conceptos te permitirán comprender mejor cómo funciona la tecnología digital.

Empecemos.

Indice de contenidos

  • 1 Diferencia entre Sistema de numeración binario y Código binario
  • 2 Sistemas de numeración
  • 3 Tipos de sistemas de numeración
  • 4 Sistema de numeración binario
  • 5 Aplicaciones del Código binario
  • 6 Conclusiones sobre el sistema de numeración binario
sistema-de-numeracion-binaria

Diferencia entre Sistema de numeración binario y Código binario

Es importante aclarar algo antes de entrar en materia y es la diferencia entre sistema de numeración binario y código binario.

  1. Sistema de numeración binario. Es un sistema de numeración en el que los números son representados utilizando únicamente dos cifras: 0 (cero) y 1 (uno).
Sistema de numeración binario.

En la imagen superior observamos un conjunto de unos y ceros, no encontramos otros dígitos ya que un sistema de numeración binario solo puede usar dos dígitos, en este caso el uno (1) y el cero (0). Con ellos podemos formar todos los números que existen.

El sistema de numeración que nosotros usamos a diario se llama sistema de numeración decimal, pero en este sistema podemos utilizar 10 dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9).

Código binario. Son sistemas de codificación usados para facilitar el diseño del hardware, para verificar la integridad de los datos transmitidos, para representación de caracteres, textos, imágenes o procesadores de instrucciones de computadora; todo ello utilizando como base el sistema de numeración binario.

Código binario.

Si detallamos la imagen, podemos ver la letra R formada por una serie de unos y ceros. Aunque este no es un ejemplo real de código binario se quiere dar a entender que por medio del sistema de numeración binario, creando un código, podemos representar lo que deseemos (por ejemplo, una letra o un símbolo) y posteriormente recuperar esa información, siempre y cuando conozcamos el proceso de codificación y decodificación de ese código, o sea qué nos quieren representar con ese conjunto de números binarios.

Un ejemplo que probablemente hayas escuchado es el código ASCII (American Standard Code for Information Interchange), que es un método de traducción de letras y símbolos a números. Recuerdas el ATL + 64 para representar el caracter arroba (@), seguro has utilizado esa combinación de teclas más de una vez. Luego veremos otros ejemplos de código binario donde se utiliza como base el sistema de numeración binario.

Ahora sí podemos entrar en materia, iniciemos con los sistemas de numeración.

Sistemas de numeración

Son un conjunto de símbolos y reglas que permiten constuir todos los números válidos. El conjunto de símbolos es finito y las reglas son diferentes dependiendo del sistema de numeración.

El nombre del sistema de numeración depende de la cantidad de símbolos del sistema, por ejemplo:

El sistema de numeración binario tiene 2 símbolos (0 y 1), llamado de base 2.

El sistema de numeración decimal tiene 10 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9), llamado de base 10.

El sistema de numeración octal tiene 8 símbolos (0, 1, 2, 3, 4, 5, 6, 7), llamado de base 8.

El sistema de numeración hexadecimal tiene 16 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F), llamado de base 16.

Notamos en el sistema de numeración hexadecimal que el 10 ha sido reemplazado por la letra A, el 11 por la B, el 12 por la C, el 13 por la D, el 14 por la E y el 15 por la F. Esto se hace porque debe ser un símbolo único y por ejemplo el 10 se compone de 2 símbolos el 1 y el 0, por eso se utiliza la letra A.

Para que podamos conocer en qué sistema de numeración se representa una cantidad se añade como subíndice, a la derecha del dígito, el número de símbolos que se pueden representar en dicho sistema.

Por ejemplo, el número 10012 es un número binario, el subíndice 2 lo indica.

El número 4708 es un número octal.

El número 6A916 es un número hexadecimal.

A los números decimales o de base 10, generalmente no se les coloca el subíndice 10, entonces podemos escribir: 54010 o 540.

Cuando leas un número que no sea del sistema decimal, debes leer cada uno de sus dígitos y nombrar la base del sistema. Por ejemplo: 11012 debes leer «uno, uno, cero, uno; de base 2», y no «mil ciento uno», ya que esa lectura sería de un número decimal o de base 10.

Te estarás preguntando ¿será posible tener sistemas de numeración de base 3 o 20? Sí, es posible utilizar otras bases, pero no interesan en la electrónica digital.

Y seguro que también te preguntarás ¿si puedo escoger cualquier base en el sistema de numeración, entonces por qué escogieron la base 2, 8, 10 o 16? Es muy probable que la base 10 se impusiera ya que los seres humanos tenemos en las manos 10 dedos y es natural que los niños cuenten con la ayuda de estos, pero entonces las otras bases por qué se escogieron… Tiene su razón, no te adelantes, ya lo comprenderás ;).

Tipos de sistemas de numeración

A lo largo de la historia del ser humano han existido muchos sistemas de numeración tales como el chino, el egipcio, el maya, entre otros. Cada uno de ellos tenía su propio sistema. Aquí solo vamos a clasificar los sistemas de numeración en dos grupos: posicionales y no posicionales.

Sistemas de numeración no posicionales

Algunos sistemas de numeración son llamados no posicionales porque el valor del símbolo utilizado no depende de la posición que ocupa en el número.

El sistema de numeración no posicional más conocido por todos es el sistema de los números romanos.

En la imagen vemos un hermoso reloj que hace uso de la numeración romana. No sé si a ti te parece bonito, pero en mi opinión un reloj con números romanos es muy llamativo :).

Reloj que utiliza los símbolos del sistema de numeración romano.

Observemos el número romano IX que es nuestro nueve (9) decimal. La I tiene un valor de uno (1) y la X tiene una valor de diez (10).

Según las reglas, propias de este sistema de numeración, debemos restar uno al diez para obtener el valor representado que es el nueve (9).

Ahora, veamos el número romano XI que es nuestro once (11) decimal. La I sigue conservando su valor de uno (1), no importa que ahora esté a la derecha y la X también conserva su valor de diez (10), aunque ahora esté ubicado a la izquierda.

Según las reglas de este sistema de numeración, ahora debemos sumar uno al diez para obtener el valor representado que es el once (11).

Como puedes imaginarte, leer un número romano exige detenerse a ver la posición de los símbolos, si están a la derecha o a la izquierda, sumar o restar. Una verdadera complicación y eso que no hemos visto cómo realizar cálculos aritméticos con ellos. En conclusión con el tiempo los números romanos cayeron en desuso.

Sistemas de numeración posicionales

En otros sistemas de numeración llamados posicionales el valor del símbolo utilizado depende de la posición que ocupa en el número.

Ejemplos de este tipo de sistema de numeración son los números binarios, octales, decimales y hexadecimales.

Para entender por qué se llama sistema de numeración posicional, analicemos este ejemplo.

Número decimal 523.

Si te pido que escribas en letras el valor que representan esos números, seguro escribirías «quinientos veintitrés», y es correcto, pero si analizamos un poco, en realidad vemos un 5 y no un 500, un 2 y no 20, el 3 sí lo leemos como lo estamos viendo.

Entonces lo que sucede es que mentalmente multiplicamos el 5 * 100, ya que ocupa el lugar de las centenas.

Multiplicamos el 2 * 10, ya que ocupa el lugar de las decenas.

Y multiplicamos el 3 * 1, ya que ocupa el lugar de las unidades.

Eso que ahora de adultos nos parece tan sencillo, de niños nos ocupa varios meses o años para entenderlo y aprender a leer los números decimales ;).

Si ahora cambio la posición de los símbolos, por ejemplo a 235, seguro que escribirías sin dudar «doscientos treinta y cinco». Observa que los dígitos son los mismos, pero al cambiar de posición, su valor también cambia.

Sistema de numeración binario

Vamos a centrarnos ahora en el sistema de numeración binario.

Ya sabemos que en el sistema de numeración binario solo podemos utilizar los dígitos 0 y 1; entonces, cómo hacemos para pasar nuestros números decimales a números binarios. Este problema se llama codificación, vamos a resolverlo.

Codificación de números binarios

Vamos con un ejemplo, necesitamos convertir el número decimal 100 a binario ¿qué hacemos?

Aquí usamos el método denominado divisiones sucesivas entre 2; ahora bien, si nos piden convertir a octal, dividimos entre 8, y si es a hexadecimal, dividimos entre 16.

Método de codificación de divisiones sucesivas.

El paso a paso es:

  1. Dividimos el número a convertir, 100 en este caso entre dos. El cociente es 50 y el resto o residuo es 0.
  2. Observamos si podemos continuar la división entre 2 logrando un cociente entero. En este caso se puede, cociente 25, residuo 0.
  3. Continuamos la división hasta donde sea posible, en este caso al llegar al cociente 1, ya no podemos dividir entre 2 y obtener un cociente entero.
  4. El resultado se obtiene colocando de izquierda a derecha, primero el último cociente obtenido, en este caso 1 y luego todos los residuos hasta el primero. Seguimos la dirección de la flecha para esto.
  5. El resultado es 11001002

Muy bien, pero ¿cómo comprobamos que el resultado es correcto? Para eso necesitamos conocer el procedimiento contrario, la decodificación.

Decodificación de números binarios

Vamos a empezar con un número pequeño.

Nos piden decodificar a decimal el número binario 1011.

Número binario 1011.

El número binario 1011 se compone de 4 dígitos binarios o bits (b), acrónimo de binary digits.

A un número binario de 4 bits se le llama también nibble.

Ya podemos entonces hablar con confianza de los bits, nos referimos a cada uno de los dígitos de un número del sistema de numeración binario.

Para poder decodificar un número binario debemos colocar sobre cada bit, la base del sistema elevada a una potencia (en color rojo). Empezando de derecha a izquierda: 20, 21, 22, 23 y así sucesivamente.

Y sobre ellas se han colocado las potencias de 2 (en color verde). Empezando de derecha a izquierda: 1, 2, 4, 8 y así sucesivamente.

Luego haremos la suma de las potencias de dos que tengan bajo ellas un 1 binario, no las que tengan 0.

En este caso 8 +2 +1 = 11

Podemos afirmar que el 10112 es nuestro 11 decimal.

Realmente primero hay que multiplicar 8*1, 4*0, 2*1 y 1*1, pero al multiplicar por la unidad obtenemos los mismos números y al multiplicar por cero, pues da cero y no afecta la suma. Si deseas utilizar este método con el sistema de numeración octal o hexadecimal, esta multiplicación antes de la suma, es obligatoria.

Vamos por un número binario más grande.

Nos piden decodificar a decimal el número binario 11001011.

Número binario 11001011.

Lo primero que notamos es que este número tiene 8 bits; aquí introducimos el concepto de byte (B) que se refiere a un conjunto de 8 bits.

También podemos decir que un nibble es la mitad de un byte.

Vamos a decodificar el número binario, entonces repetimos el procedimiento.

Para poder decodificar un número binario debemos colocar sobre cada bit, la base del sistema elevada a una potencia (en color rojo). Empezando de derecha a izquierda: 20, 21, 22, 23 y así sucesivamente.

Y sobre ellas se han colocado las potencias de 2 (en color verde). Empezando de derecha a izquierda: 1, 2, 4, 8 y así sucesivamente.

Luego haremos la suma de las potencias de dos que tengan bajo ellas un 1 binario, no las que tengan 0.

En este caso 128 + 64 + 8 +2 +1 = 203

Podemos afirmar que el 110010112 es nuestro 203 decimal.

Cuando se trabaja con los bits y los bytes, generalmente es con cantidades enormes de ellos, para facilitar el manejo de esas cantidades, se utilizan prefijos del sistema internacional.

Hay que tener en cuenta que cuando se habla de kb (kilobits) o de kB (kilobytes), por tratarse del sistema de numeración binario y no del decimal, el prefijo kilo no significa 1000, sino la potencia de 2 más cercana a ese valor, 210 (1024). Entonces 2 kB no serán 2000 bytes sino 2048 bytes.

Sistema de numeración binario y su relación con la programación

Vamos a ver la relación que hay entre el sistema de numeración binario y la programación.

Pero antes repasemos algunos conceptos importantes:

  1. El lenguaje de las máquinas digitales se basa en el sistema de numeración binario.
  2. Los sistemas de numeración que se impusieron finalmente fueron los sistemas de numeración posicionales.
  3. El sistema de numeración posicional más usado por los humanos es el decimal, pero la electrónica y la programación utilizan el binario, también son útiles el octal y el hexadecimal.
  4. Podemos realizar conversiones de un sistema de numeración a otro. En este artículo solo hemos ejemplificado el caso del sistema de numeración binario, pero es válido también para todos los sistemas de numeración posicionales.

Respondamos ahora la pregunta del inicio del artículo ¿por qué nos interesan el sistema de numeración octal y el sistema de numeración hexadecimal?

Si utilizamos tres bits, podemos generar los números binarios 000, 001, 010, 011, 100, 101, 110, 111 que corresponden a los decimales 0, 1, 2, 3, 4, 5, 6 y 7 respectivamente. Ya sabes que el sistema de numeración octal tiene 8 dígitos, del 0 al 7. Por lo tanto, es muy sencillo convertir un número octal en binario y viceversa.

Por ejemplo, el número 718 en binario es 111001, lo puedes corroborar convirtiendo el 718 en decimal que sería 57.

Número octal 71.

8*7 = 56 y 1*1 = 1. Ahora 56 + 1 = 57.

Si utilizamos cuatro bits, podemos generar los números binarios 0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111 que corresponden al 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (A), 11 (B), 12 (C), 13 (D), 14 (E) y 15 (F) respectivamente.

Por tanto, convertir un número hexadecimal a binario y viceversa es muy fácil.

Por ejemplo, el número hexadecimal A9, lo podemos separar en sus cuatro bits, A = 1010 y 9 = 1001. Luego formamos un solo número binario 10101001 y corresponde al hexadecimal A9. Puedes corroborarlo manualmente si lo deseas, o utilizar un convertidor de decimal a binario en Internet ;).

El sistema de numeración hexadecimal lo utilizamos cuando programamos para reducir la cantidad de dígitos. Los números binarios se componen de gran cantidad de dígitos, y a medida que el sistema de numeración incrementa su base, la cantidad de dígitos disminuye.

Por ejemplo 1000002 que es nuestro 32 decimal, en hexadecimal se representa como 2016. Es decir, en binario tiene 6 bits y en hexadecimal solo ocupa dos dígitos.

Otro uso del sistema hexadecimal es la notación por colores que se usa en las plantillas web HTML.

Cuando estamos programando y queremos representar un dígito hexadecimal, anteponemos 0x. Entonces si escribimos 0x40 es el número 4016

Sistema de numeración binario y su relación con la electrónica

Lo primero que es necesario entender es que la electrónica se basa en el funcionamiento del transistor. Este componente, fundamental en la tecnología moderna, puede amplificar como lo hacían las válvulas al vacío, pero con muchas ventajas sobre aquellas; además puede conmutar como un interruptor (encender y apagar) a velocidades inimaginables para la comprensión de un ser humano.

Transistor,componente fundamental de la electrónica.

Cuando un transistor se enciende (hay corriente) o se apaga (no hay corriente), es el equivalente al 1 y al 0 del sistema de numeración binario, por eso es el lenguaje de las máquinas, ya que se complementan perfectamente.

Los transistores con el tiempo se hicieron cada vez más pequeños y se encapsularon el los llamados circuitos integrados.

chip-ta4665

Actualmente los microprocesadores y microcontroladores, contienen cientos de miles o millones de transistores.

microprocesador-sistema-de-numeracion-binaria

Aplicaciones del Código binario

Ahora veamos algunos ejemplos de cómo la tecnología hace uso del sistema de numeración binario codificándolo para fines específicos.

Código BCD (Decimal Codificado en Binario)

Es un código en donde cada dígito decimal es codificado en una secuencia de cuatro (4) bits.

Número decimal 428 codificado en BCD.

En el ejemplo de la imagen superior podemos observar que el número decimal cuatro (4) ha sido reemplazado por el número 4 en binario realizado con 4 bits o nibble (0100). Lo mismo ocurre con el 2 (0010) y el 8 (1000).

¿Qué beneficio puede tener el utilizar el código BCD?

Las operaciones aritméticas con el código BCD son más precisas que utilizando el sistema de numeración binario puro, en electrónica digital se utiliza para mostrar valores numéricos en displays o visualizadores de 7 segmentos o para programar Controles Lógicos Programables (PLC) entre otros usos.

Código Gray

Este código creado por el físico Frank Gray, también llamado código binario reflejado, modifica el sistema de numeración binario puro logrando que dos números consecutivos difieran solamente en uno de sus dígitos.

Analicemos una tabla que muestra el código Gray de 3 bits.

Código Gray de 3 bits.

El número 000 corresponde al 0002 y al 0 decimal.

El número 001 corresponde al 0012 y al 1 decimal. Hasta aquí todo igual.

El número 011 corresponde al 0102 y al 2 decimal.

De aquí en adelante notamos que los números de código Gray no corresponden con el sistema de numeración binario, pero cada dígito difiere del próximo en un solo dígito.

Se puede tener código Gray de dos, tres o más bits.

El código Gray se utiliza en la industria, en la robótica, para implementar circuitos combinacionales y circuitos secuenciales, también para facilitar la corrección de errores en los sistemas de comunicación, tales como la televisión por cable y la televisión digital terrestre; incluso sirve para resolver el problema de las Torres de Hanói ;).

Código ASCII

El código ASCII (American Standard Code for Information Interchange) se creó para representar los caracteres de la lengua inglesa.

Consiste en 8 bits que representan a los diferentes caracteres.

Analicemos esta tabla que muestra una fracción del código ASCII.

Caracteres mostrando su representación en código ASCII.

Tomemos como ejemplo la letra A.

La letra A se representa según el código ASCII 0100 0001.

Con lo que ya hemos visto podemos afirmar que:

  1. La letra A está representada por 8 bits.
  2. También podemos decir que está representada por 2 nibbles o un byte.
  3. 0100 0001 leído como un número binario, sería el número decimal 65.
  4. Leído como un número hexadecimal sería el 4116.

El código ASCII ha sufrido modificaciones a lo largo del tiempo, pero es considerado como el primer estándar que impulso la computación. Podemos nombrar también el código ISO/IEC 8859-1, que es más completo ya que incluye múltiples caracteres presentes en otras lenguas.

Existen otros muchos otros códigos binarios pero con estos ejemplos creo que son suficientes para notar la importancia del sistema de numeración binario en la tecnología.

Conclusiones sobre el sistema de numeración binario

Si me has seguido hasta acá considero que ahora tienes un poco más claro eso del lenguaje de las máquinas. Si apenas inicias en el estudio de la tecnología, puedes estar un poco confundido, y es natural, no te preocupes, tantos 1 y 0 a todos nos enloquece un poco al principio ;) solo es cuestión de practicar.

Lo importante es que comprendamos la importancia del sistema de numeración binario y cómo codificándolo de diversas formas, se ha logrado los grandes avances tecnológicos.

El próximo paso para la comprensión de las bases de la electrónica digital y la programación es el estudio de las compuertas digitales, pero es tema para una próxima ocasión.

Espero que este artículo haya sido de interés y muchas gracias por tu atención.

Hasta pronto.

Gracias a depositphotos por la cesión de sus imágenes.

integraciones de Home Assistant

Integraciones de Home Assistant

En este tutorial voy a hablar de las integraciones de Home Assistant pero antes déjame contarte la historia de Jack, un norteamericano de bien, de los … [+ info...]

dispositivos inteligentes para el hogar

Tipos de dispositivos inteligentes para el hogar

En este artículo voy a hablar de los dispositivos domóticos o dispositivos inteligentes para el hogar que pueden ser integrados dentro de Home … [+ info...]

osciloscopios

Osciloscopio para proyectos con Arduino

Una imagen vale más que mil palabras. Seguro has escuchado esta frase alguna vez y es probable que en la mayoría de las ocasiones lo que dice sea … [+ info...]

Copyright © 2023 · Programar Fácil · Aviso legal

Utilizamos cookies propios y de terceros para mejorar nuestros servicios y experiencia de usuario. Si continua navegando, consideramos que acepta su uso.Aceptar Política de privacidad y cookies
Política de cookies

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Siempre activado
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Non-necessary
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
GUARDAR Y ACEPTAR