Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
Artículos de Tecnología > Front-end

Entienda el sistema de Código Binario

Marianna Costa
Marianna Costa
25/04/2023

Compartir

Mira este artículo:
  1. Introducción

Introducción

banner.webp aquí alt text: *imagen de un código binario*

Cuando empecé a estudiar programación, una de mis principales dudas era: "¿cómo puede la máquina entender las instrucciones de un lenguaje?" O me preguntaba: ""¿Cómo pueden los circuitos, el procesador y la memoria convertir algunas líneas de código en un programa o aplicación móvil?" ¿Alguna vez te has hecho esta pregunta?

Para entender un poco mejor, investigué sobre el tema y en las primeras clases de la universidad me encontré con el llamado sistema binario. Ahora estarás pensando: "Ah, entonces fue ahí donde las cosas comenzaron a tener más sentido". La respuesta es "NO!"

imagem1.webp aquí alt text: *imagen de un gatito llorando*

¿Cómo? Sí, te lo explico... no tuvo sentido, porque en realidad todo se volvió muy confuso y casi me explota la cabeza tratando de calcular la conversión de números binarios en papel. Ante esta situación, hice lo que cualquier persona haría: investigué en Google y estudié en Alura xD.

Acompáñame y comprenderás qué son los números binarios. ¡Vamos allá!

Veo números... todo el tiempo

Sabemos que los números forman parte de nuestro día a día y lidiamos con ellos desde que nos despertamos hasta que nos dormimos. Como el precio de la comida, o incluso la cantidad de horas que pasas frente a tu computadora en un juego online.

Con los números es posible representar muchas cosas y también convertir estas representaciones numéricas en información, o incluso constituir una forma de comunicación (puede ser un número de teléfono, dirección, cuenta bancaria, entre otros ejemplos).

Piensa conmigo: "Si nosotros, los seres humanos, usamos números para diferentes abstracciones del mundo real, ¿por qué sería diferente con las máquinas?"

imagem2.webp aquí alt text: *hombre tocándose la cabeza con el dedo índice*

Por lo tanto, tiene sentido construir máquinas o soluciones de acuerdo a nuestra comprensión de la realidad, es decir, que tengan alguna conexión con nuestra forma de organizar el mundo real, y por eso también usamos números para dar instrucciones a las computadoras.

Por cierto, ahora entiendo que nos comunicamos con las máquinas a través de números. Pero... ¿las máquinas calculan los números de la misma manera que aprendemos en la escuela?

Ahora debes haber notado un detalle muy importante. Usamos 10 dígitos, los números 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 para crear, cuantificar o incluso organizar cualquier cosa. Se llama sistema decimal, son números que tienen base 10 y su clasificación está relacionada con la posición que ocupan.

¿Te parece complicado ahora? Veámoslo desde otro punto de vista.

Observemos el número 12 en decimal:

imagem3.webp aquí alt text: *representación del número 12 en decimal*

Para formar el decimal 12, es necesario multiplicar cada dígito por 10 elevado a su posición (el 2 está en la posición 0 y el 1 está en la posición 1). Después de eso, sumamos los factores y obtenemos su valor decimal.

imagem4.gif aquí alt text: *hombre viendo operaciones matemáticas*

A veces, al mirar los números, el cálculo no parece tener mucho sentido. Veamos de otra manera:

imagem5.png aquí alt text: *imagen explicativa de como formar el decimal 12*

Creo que ahora podemos visualizarlo mejor, ¿no? Para las computadoras, la formación del patrón numérico es muy similar. Sin embargo, las máquinas entienden los números en un sistema binario.

El sistema binario funciona de la misma manera que el decimal. Sin embargo, el decimal tiene 10 dígitos como base, y el binario solo tiene dos dígitos. La regla de formación es la misma: cada dígito es su valor multiplicado por 2 elevado a su posición en el número total menos uno. Después de calcular el valor de cada dígito, simplemente súmalos para obtener el valor final en decimal. ¿Veamos un ejemplo práctico?

Ya tenemos el número 12 en decimal, pero hay una representación del mismo en binario, y podemos obtener esta información convirtiendo los valores decimales a código binario. Veamos el siguiente diagrama para entender cómo funciona:

imagem6.webp aquí alt text: *representación de la conversión de valores decimales al código binario.*

Primero dividimos el decimal 12 por 2, y su resultado es 6. ¿Correcto? "Está bien, pero ¿qué hay de ese 0 allí abajo?" El número 0 es el resto de la división, es lo que queda. Entonces necesitamos dividir todo el número hasta que no haya más unidades divisibles. El resto de la división corresponde al número binario, solo necesitamos invertir el orden y 12 en binario es igual a 1100.

imagem7.webp aquí alt text: *hombre gritando

¿Y por qué las máquinas utilizan el binario y no el decimal?

Para comprender mejor este punto, necesitamos volver un poco la mirada hacia la historia de la computación.. En las computadoras de uso general, más cercanas a las computadoras actuales (podemos decir que son como el tatarabuelo de tu notebook o celular), la programación se realizaba con la conexión directa entre unidades físicas que enviaban señales eléctricas. Estas unidades físicas eran válvulas, y había que trabajar manualmente para enviar las instrucciones, encendiendo y apagando para enviar la información.

La ENIAC (Electronic Numerical Integrator and Computer, en español, computadora integradora numérica electrónica) es un ejemplo de estas computadoras de uso general que necesitaban ser encendidas y apagadas manualmente para ser programadas.

Sin embargo, la ENIAC era una máquina decimal y funcionaba con una memoria de 20 "acumuladores" que guardaban un número decimal de 10 dígitos en cada unidad. Había un anillo de 10 válvulas que representaba cada dígito y cuando una válvula estaba en el estado ENCENDIDO, representaba uno de esos 10 dígitos. Así se hacían los cálculos, en medio de la conexión o desconexión de cables y un enredo de conexiones entre interruptores.

imagem8.webp aquí alt text: *tres mujeres y un hombre manipulando una máquina decimal.*

Podemos ver que programar no era tan fácil, ¡requería esfuerzo físico y mental! ¿Te imaginas: programador bodybuilder?

imagem9.gif aquí alt text:  *hombre utilizando una computadora para levantamiento de peso.*

Debido a estas características, era difícil trabajar y encontrar mano de obra para operar computadoras como la ENIAC. En este sentido, uno de los consultores del proyecto ENIAC fue el matemático Von Neumann, quien imaginó una forma de facilitar el proceso de programación con la propuesta de un nuevo programa informático almacenado a mediados de la década de 1940. La EDVAC (Electronic Discrete Variable Automatic Computer, en traducción libre, calculadora electrónica automática de variable discreta) y más tarde el IAS (las siglas vienen del nombre del instituto de Princeton, Institute for Advanced Study - Instituto de estudios avanzados) combinaron una arquitectura que también optimizó el procesamiento de datos.

¿Cuál es la relación entre esto y el código binario? ¿Cómo transferir la información del sistema binario a la máquina?, o mejor dicho, ¿cómo entender las computadoras en el sistema binario?

imagem10.webp aquí alt text: *imágenes de cuatro matemáticos, entre ellos Von Neumann, Alan Turing y George Boole.*

Matemáticos como Von Neumann y Alan Turing se apropiaron de conceptos de Leibniz (sistema de numeración binaria) y George Boole (álgebra booleana), y los aplicaron en sus estudios sobre arquitectura de computadoras y criptografía, trabajos que forman la base de la computación actual. De esta forma, se puede observar que el sistema binario no fue inventado para las computadoras o es algo exclusivo de la computación, sino que su aplicación en el contexto de las computadoras, la conversión de binario a decimal que realizan las máquinas y la codificación es una combinación de arquitectura computacional y lógica matemática.

En este sentido, es muy importante entender que las instrucciones necesitan ser procesadas por una máquina que está formada por circuitos y componentes electrónicos (muy diferente al ser humano, que puede recibir diferentes estímulos y procesar información de manera compleja). Junto con la segunda generación de computadoras y transistores (¡adios, válvulas!), esto genera algunas "limitaciones" ya que las máquinas identifican los estados de acuerdo con las señales eléctricas, que son apagado y encendido, nuestro 0 y 1, o simplemente el sistema binario (¡ta-da!).

imagem11.webp aquí alt text: *Hombre con ropa de mago, realizando un truco de magia con fuego y diciendo

Entonces, ¿las máquinas solo funcionan con el sistema binario, solo 01, encendido o apagado? La respuesta es "sí" y "no", centrémonos ahora en el código binario...

Como vimos, el decimal tiene 10 símbolos para representar números infinitos, los números binarios tienen base 2, es decir, dos dígitos que también hacen combinaciones infinitas y pueden representar un sinfín de cosas solo con el 0 y 1. ¡Cada letra de este artículo, todos los píxeles de los gifs e imágenes estáticas que elegí, archivos de texto leídos, videos, audio, todo se construye con el código binario!

En la computación, toda la información es procesada por la máquina a través del código binario, que utiliza como base el sistema binario para convertir los valores de 0 y 1 de los pulsos eléctricos en información. Fíjate en la imagen de abajo, en ella tenemos la representación de 1 bit como encendido (ON) y abajo tenemos 8 dígitos que representan 1 Byte formado por los bits 10101100 (creo que ahora lo entiendes, ¿no?).

imagem12.webp aquí alt text: *Imagen que representa 1 bit como encendido (ON) y, debajo, 8 dígitos que representan 1 Byte formado por los bits 10101100.*

Bueno, entendemos esa parte, pero ¿qué es y cómo construir un código binario?

El código binario está compuesto por algunas combinaciones de 0 y 1. El "alfabeto" binario presenta algunas formas de organización de la información, como se puede observar en la siguiente tabla:

Nombre de la unidadBase DosNúmero de bits
bit2¹1
Byte2⁸8
Kilobyte2¹⁰1.024
megabyte2²⁰1.048.576
gigabyte2³⁰1.073.741.824
terabyte2⁴⁰1.099.511.627.776

1 bit es el binary digit, que en traducción libre es el dígito binario. Esta es la unidad de información más pequeña en la computadora, que se puede compartir o almacenar con sus dos valores: 0 o 1.

Por su parte, el Byte, basado en la agrupación de 8 bits (arquitectura popularizada por IBM en la década de 1960), es una unidad de información digital para representar letras, símbolos o números, por ejemplo, y facilita su proceso de la información enviada a la computadora.

En pocas palabras, 1 byte es la suma de 8 bits:

bit + bit + bit + bit + bit + bit + bit + bit = 1 byte o 1 byte = 8 bits

Trabajar con textos también es otra forma de codificar, usamos mucho el código ASCII y el UTF-8, ¿quieres conocer un poco más?

Códigos ASCII, UNICODE y UTF-8

El Código ASCII, American Standard Code for Information Interchange - Código Estándar Americano para el Intercambio de Información, es un esquema de codificación de caracteres alfanuméricos. Podemos representar letras, símbolos, números, espacio, comillas, entre otros. Hay varios tipos de esquemas y es común que nosotros, los brasileños, tengamos ciertos problemas al acentuar palabras, por ejemplo, por eso necesitamos seleccionar el patrón correcto y evitar estas ocurrencias.

UNICODE es el estándar de codificación de caracteres de Internet, se basó en ISO/IEC 10646 y fue diseñado para tratar los miles de sistemas de codificación que han surgido. Por eso, incorpora los estándares UTF, UTF-16, UTF-32 y UTF-8.

UTF-8 es ampliamente utilizado en la web y el estándar estavo presente en el 95% de todos los sitios en 2020. Cada carácter se representa utilizando de 1 a 4 bytes y una de sus ventajas es que es compatible con versiones antiguas de ASCII. Además, cada byte reserva algunos bits para la codificación, que es diferente de ASCII, y por lo tanto, hay menos posibilidades de que los bytes se corrompan al momento de la conversión a UTF-8.

Tenía curiosidad y lo probé para ver si funcionaba, ¿quieres probarlo tú también? Te desafío a convertir el binario a texto. Intentemos con el siguiente código:

|01000001 01101100 01110101 01110010 01100001|

Puedes usar la tabla ASCII y convertir bit a bit o puedes usar un conversor aquí en este enlace Conversor online de binario a UTF8.

Conclusión

Quizás realizar la conversión de decimal a binario y viceversa no tenga mucho sentido en la rutina de desarrollo, pero sin duda me ayudó mucho a visualizar el funcionamiento del sistema binario y como la relación de posicionamiento y desplazamiento de los dígitos es directamente relacionado con el funcionamiento de la memoria y el procesamiento de la información. Entender un poco más sobre las herramientas que utilizamos es un paso fundamental para aprovechar mejor los recursos disponibles y evitar incluso posibles errores en nuestro código. Después de todo... ¿quién nunca se ha encontrado con el problema de punto flotante causado por la conversión de decimal a binario?

¡Pero sin duda, lo más importante es que ahora podrás entender este chiste!

imagem13.jpg aquí alt text: *imagen que dice

img-autora

Camila Pessôa

¡Hola, soy Camila! Tengo 33 años, soy madre y entré en el campo de la tecnología a través de la robótica educativa. Participé en el Bootcamp {Reprograma} enfocado en Back-End/Node.js y estudio Sistemas de Información. Actualmente formo parte del equipo de Scuba y tengo una gran pasión por la educación y la tecnología, ¡porque creo que esta combinación es transformadora!

img-coautora

Marianna Costa

Brasileña, estudiante de ingeniería informática y formo parte del equipo Scuba Team en Alura Latam. Soy amante de la tecnología desde siempre y me enamoré del desarrollo front end. Soy muy curiosa y siempre estoy interesada en aprender sobre los diferentes temas. Me encanta compartir y recibir conocimiento porque creo firmemente que "compartir conocimiento es lo mismo que difundir desarrollo".

Artículo Anterior
Tipado dinámico con Javascript
Siguiente Artículo
¿Qué es JSON Web Token?

Ver otros artículos sobre Front-end

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Powered by

Caelum

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast