¿Alguna vez te has preguntado cómo tu ordenador o cualquier otro dispositivo electrónico interpreta y muestra caracteres como letras, números y símbolos? Existe una 'clave secreta', llamada código ASCII, que desbloquea este misterio.
*Artículo con contenido actualizado en 2023
En este post vamos a mostrarte cómo este código se convierte en el lenguaje universal de los sistemas informáticos, permitiendo la comunicación y representación de información de manera estandarizada y, por tanto, que todo funcione tal y como debe.
Qué es el código ASCII
El código ASCII (American Standard Code for Information Interchange) es un sistema de codificación que asigna un valor numérico único a diferentes caracteres utilizados en la comunicación electrónica. Fue desarrollado en la década de 1960 como un estándar para la transferencia de datos entre diferentes dispositivos informáticos.
El código ASCII utiliza 7 bits para representar 128 caracteres diferentes. Estos caracteres incluyen letras mayúsculas y minúsculas, dígitos numéricos, signos de puntuación, símbolos matemáticos y una serie de caracteres de control utilizados para el formateo de texto y el control de dispositivos. Los primeros 32 caracteres son caracteres de control no imprimibles, como el retorno de carro (enter, o salto de línea) y el avance de línea.
Este código ASCII se convirtió en un estándar ampliamente utilizado en la industria informática y sentó las bases para la comunicación entre diferentes sistemas informáticos. Sin embargo, a medida que la tecnología avanzó, el sistema ASCII se quedó corto para representar todos los caracteres necesarios en diferentes idiomas y alfabetos. Esto llevó al desarrollo de codificaciones más amplias, como el estándar Unicode, que utiliza más bits para representar una gama más amplia de caracteres.
A pesar de sus limitaciones, el código ASCII sigue siendo relevante y se utiliza ampliamente en la programación y la comunicación de datos. Comprender cómo se asignan los caracteres a valores numéricos en el código ASCII es fundamental para trabajar con datos en entornos informáticos.
Cómo se estructura el código ASCII
El código ASCII asigna valores numéricos a diferentes caracteres, y está organizado de la siguiente manera:
- Caracteres de control: Los primeros 32 caracteres son caracteres de control no imprimibles, utilizados para el formateo de texto y el control de dispositivos. Incluyen el retorno de carro, el avance de línea y el tabulador, entre otros.
- Caracteres imprimibles básicos: A partir del valor 32, se encuentran los caracteres imprimibles, como letras mayúsculas y minúsculas, dígitos numéricos, signos de puntuación y símbolos matemáticos.
- Caracteres extendidos: A partir del valor 127, se incluyen caracteres extendidos que no están presentes en todas las versiones del código ASCII. Estos caracteres pueden variar según la codificación específica utilizada, como el ASCII extendido o las codificaciones específicas de diferentes idiomas.
Aunque aprender todos los caracteres del código ASCII pueda parecer algo inabarcable de entrada, lo cierto es que al ser únicamente 128, muchos de ellos consecutivos de forma lógica al corresponderse con letras minúsculas, letras mayúsculas o números, lo cierto es que hacerlo resulta mucho más intuitivo de lo que podría sugerir de entrada.
Eso sí, a día de hoy es muy fácil acceder a tablas de código ASCII con todas sus variantes como las que mostramos en el próximo apartado, así que de entrada resulta mucho más sencillo recurrir a ellas que aprendérselas de carrerilla como si fuesen la tabla periódica o la tabla de verbos irregulares en inglés.
Tabla código ASCII
Aunque pueda parecer algo que ya está desfasado, saber cómo se representan los números del 0 al 9 en código ASCII y cuál es su equivalencia en binario puede sacarte de más de un apuro.
Carácter | Valor decimal |
0 | 48 |
1 | 49 |
2 | 50 |
3 | 51 |
4 | 52 |
5 | 53 |
6 | 54 |
7 | 55 |
8 | 56 |
9 | 57 |
También es importante tener claro que las letras del alfabeto tienen dos correspondencias en el código ASCII en función de si sin mayúsculas o minúsculas, que son las siguientes:
Letra | Valor decimal mayúscula | Valor decimal minúscula |
a | 65 | 97 |
b | 66 | 98 |
c | 67 | 99 |
d | 68 | 100 |
e | 69 | 101 |
f | 70 | 102 |
g | 71 | 103 |
h | 72 | 104 |
i | 73 | 105 |
j | 74 | 106 |
k | 75 | 107 |
l | 76 | 108 |
m | 77 | 109 |
n | 78 | 110 |
o | 79 | 111 |
p | 80 | 112 |
q | 81 | 113 |
r | 82 | 114 |
s | 83 | 115 |
t | 84 | 116 |
u | 85 | 117 |
v | 86 | 118 |
w | 87 | 119 |
x | 88 | 120 |
y | 89 | 121 |
z | 90 | 122 |
En este enlace de la web de Microsoft podemos encontrar a mayores toda la información sobre cómo Insertar códigos de caracteres ASCII en Word, el procesador de texto incluido en Microsoft Office. Se incluyen todas las combinaciones necesarias para escribir un carácter, siempre manteniendo presionada la tecla ALT de nuestro teclado.
Cómo pasar código binario a ASCII
Saber convertir código binario a ASCII es otra de esas cosas que hoy en día pueden hacerse online, pero las divisiones de dos cifras también y siguen explicándose en los colegios, ¿verdad?
Pues eso, que como el saber no ocupa lugar... ¡te dejamos los pasos a seguir para hacerlo!
- La representación binaria de un carácter ASCII consta de 8 bits, así que separa el código binario en grupos de 8 bits (un byte) para cada carácter.
- Convierte cada grupo de bits a su equivalente decimal.
- Consulta una tabla de equivalencia que relacione los valores decimales con los caracteres ASCII correspondientes.
- Asigna el carácter ASCII correspondiente a cada valor decimal obtenido.
- Repite los pasos anteriores para cada grupo de 8 bits hasta que hayas convertido todo el código binario.
Tabla de equivalencia ASCII para el alfabeto en mayúscula
Carácter | Valor decimal | Valor binario |
A | 65 | 01000001 |
B | 66 | 01000010 |
C | 67 | 01000011 |
D | 68 | 01000100 |
E | 69 | 01000101 |
F | 70 | 01000110 |
G | 71 | 01000111 |
H | 72 | 01001000 |
I | 73 | 01001001 |
J | 74 | 01001010 |
K | 75 | 01001011 |
L | 76 | 01001100 |
M | 77 | 01001101 |
N | 78 | 01001110 |
O | 79 | 01001111 |
P | 80 | 01010000 |
Q | 81 | 01010001 |
R | 82 | 01010010 |
S | 83 | 01010011 |
T | 84 | 01010100 |
U | 85 | 01010101 |
V | 86 | 01010110 |
W | 87 | 01010111 |
X | 88 | 01011000 |
Y | 89 | 01011001 |
Z | 90 | 01011010 |
Tabla de equivalencia ASCII para el alfabeto en minúscula
Carácter | Valor decimal | Valor binario |
a | 97 | 01100001 |
b | 98 | 01100010 |
c | 99 | 01100011 |
d | 100 | 01100100 |
e | 101 | 01100101 |
f | 102 | 01100110 |
g | 103 | 01100111 |
h | 104 | 01101000 |
i | 105 | 01101001 |
j | 106 | 01101010 |
k | 107 | 01101011 |
l | 108 | 01101100 |
m | 109 | 01101101 |
n | 110 | 01101110 |
o | 111 | 01101111 |
p | 112 | 01110000 |
q | 113 | 01110001 |
r | 114 | 01110010 |
s | 115 | 01110011 |
t | 116 | 01110100 |
u | 117 | 01110101 |
v | 118 | 01110110 |
w | 119 | 01110111 |
x | 120 | 01111000 |
y | 121 | 01111001 |
z | 122 | 01111010 |
Tabla de equivalencia ASCII para los números del 0 al 9
Carácter | Valor decimal | Valor binario |
0 | 48 | 00110000 |
1 | 49 | 00110001 |
2 | 50 | 00110010 |
3 | 51 | 00110011 |
4 | 52 | 00110100 |
5 | 53 | 00110101 |
6 | 54 | 00110110 |
7 | 55 | 00110111 |
8 | 56 | 00111000 |
9 | 57 | 00111001 |
Sabiendo esto, supongamos que tenemos el código binario "01000001 01000010 01000011". Siguiendo los pasos mencionados anteriormente deberíamos:
- Separar el código binario en grupos de 8 bits: "01000001", "01000010", "01000011".
- Convertir cada grupo de bits a decimal: 65, 66, 67.
- Consultar la tabla de equivalencia ASCII y encontrar los caracteres correspondientes: "A", "B" y "C".
- El resultado sería "ABC", que es la representación ASCII del código binario dado.
Ten en cuenta siempre que los códigos ASCII van del 0 al 127 y que cada carácter se representa con 8 bits, ¡el resto está chupado!
Por suerte, crear una página web a día de hoy resulta mucho más sencillo que todo esto gracias a las interfaces visuales de las que disponemos. Aunque si hay algo realmente sencillo es contratar un alojamiento web de calidad para tus sitios web, y mejor aún, ¡pagando lo justo por él!
Bibliografía
- Cerf, V. (1969). ASCII format for network interchange. RFC Editor. https://www.rfc-editor.org/info/rfc20
- Nelson, T. (1997). The art of human-computer interface design. Addison-Wesley Longman Publishing Co., Inc.
- Holzmann, G. J. (2003). The early history of data networks. Wiley-IEEE Computer Society Pr. https://www.computer.org/csdl/book/2003/13/27195/pdf/27195.pdf
- Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3), 379-423. https://doi.org/10.1002/j.1538-7305.1948.tb01338.x
- Bell, T., Witten, I. H., & Fellows, M. (1998). Computer Science Unplugged. https://www.csunplugged.org/wp-content/uploads/2014/12/unplugged-full-book.pdf