De hecho, ASCII se concibió originalmente como un código de 7 bits. Esto se hizo mucho antes de que los bytes de 8 bits se volvieran ubicuos, e incluso en la década de 1990 se podía encontrar software que asumía que podía usar el octavo bit de cada byte de texto para sus propios fines ("no limpio de 8 bits"). Hoy en día, la gente lo ve como una codificación de 8 bits en la que los bytes 0x80 a 0xFF no tienen un significado definido, pero eso es un retcon .
Hay docenas de codificaciones de texto que utilizan el octavo bit; se pueden clasificar como compatibles con ASCII o no, y de ancho fijo o variable. Compatible con ASCII significa que, independientemente del contexto , los bytes individuales con valores de 0x00 a 0x7F codifican los mismos caracteres que lo harían en ASCII. No querrá tener nada que ver con una codificación de texto no compatible con ASCII si es posible que pueda evitarlo; Los programas ingenuos que esperan ASCII tienden a malinterpretarlos de una manera catastrófica, a menudo que rompe la seguridad. Están tan desaprobados hoy en día que (por ejemplo) HTML5 prohíbe su uso en la Web pública, con la desafortunada excepción de UTF-16 . No voy a hablar más de ellos.
Una codificación de ancho fijo significa lo que parece: todos los caracteres se codifican utilizando el mismo número de bytes. Para ser compatible con ASCII, una codificación con fijo debe codificar todos sus caracteres usando un solo byte, por lo que no puede tener más de 256 caracteres. La codificación más común hoy en día es Windows-1252 , una extensión de ISO 8859-1 .
Solo hay una codificación compatible con ASCII de ancho variable que vale la pena conocer hoy en día, pero es muy importante: UTF-8 , que empaqueta todo Unicode en una codificación compatible con ASCII. Realmente desea usar esto si puede administrarlo.
Como nota final, "ASCII" hoy en día toma su definición práctica de Unicode, no su estándar original (ANSI X3.4-1968), porque históricamente hubo varias docenas de variaciones en el repertorio de 127 caracteres ASCII - por ejemplo, algunos de la puntuación puede sustituirse por letras acentuadas para facilitar la transmisión del texto en francés. Hoy en día todas esas variaciones son obsoletas, y cuando la gente dice "ASCII" quiere decir que los bytes con valor 0x00 a 0x7F codifican puntos de código Unicode U + 0000 a U + 007F. Es probable que esto solo le importe si alguna vez se encuentra escribiendo un estándar técnico.
Si está interesado en la historia de ASCII y las codificaciones que lo precedieron, comience con el artículo "La evolución de los códigos de caracteres, 1874-1968" (copia de samizdat en http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) y luego buscar sus referencias (muchas de las cuales no están disponibles en línea y pueden ser difíciles de encontrar incluso con acceso a una biblioteca universitaria, lamento decirlo).
En Linux
man ascii
dice:fuente
La tabla ASCII original está codificada en 7 bits, por lo que tiene 128 caracteres.
Hoy en día, la mayoría de lectores / editores utilizan una tabla ASCII "extendida" (de ISO 8859-1 ), que está codificada en 8 bits y tiene 256 caracteres (incluidos Á , Ä , Œ , é , è y otros caracteres útiles para los idiomas europeos también como glifos matemáticos y otros símbolos).
Si bien UTF-8 usa la misma codificación que la tabla ASCII básica (el significado
0x41
es A en ambos códigos), no comparte la misma codificación para el bloque "Latin Extended-A". Lo que a veces hace que aparezcan personajes extraños en palabras como a la carta o piñata .fuente
La codificación ASCII es de 7 bits, pero en la práctica, los caracteres codificados en ASCII no se almacenan en grupos de 7 bits. En cambio, un ASCII se almacena en un byte, con el MSB generalmente establecido en 0 (sí, se desperdicia en ASCII).
Puede verificar esto ingresando una cadena en el juego de caracteres ASCII en un editor de texto, configurando la codificación en ASCII y viendo el binario / hexadecimal:
Aparte: el uso de codificación (estrictamente) ASCII ahora es poco común, a favor de UTF-8 (que no desperdicia el MSB mencionado anteriormente; de hecho, un MSB de 1 indica que el punto de código está codificado con más de 1 byte).
fuente
El código ASCII original proporcionó 128 caracteres diferentes numerados del 0 al 127. ASCII a 7 bits son sinónimos, ya que el byte de 8 bits es el elemento de almacenamiento común, ASCII deja espacio para 128 caracteres adicionales que se utilizan para idiomas extranjeros y otros símbolos. Pero el código de 7 bits se hizo originalmente antes del código de 8 bits. ASCII son las siglas de American Standard Code for Information Interchange. En los primeros sistemas de correo de Internet, solo admitía códigos ASCII de 7 bits, esto se debía a que luego podía ejecutar programas y archivos multimedia en sistemas de succión. Estos sistemas usan 8 bits del byte, pero luego deben convertirse en un formato de 7 bits utilizando métodos de codificación como MIME, UUcoding y BinHex. Esto significa que los 8 bits se han convertido en caracteres de 7 bits, lo que agrega bytes adicionales para codificarlos.
fuente
cuando llamamos a ASCII como código de 7 bits, el bit más a la izquierda se usa como bit de signo, por lo que con 7 bits podemos escribir hasta 127.Eso significa de -126 a 127 porque el valor máximo de imán de ASCII es de 0 a 255.Esto puede ser solo satisfecho con el argumento de 7 bits si el último bit se considera bit de signo
fuente