¿Cómo se programan los caracteres alfabéticos en una computadora?

0

No soy estudiante de cs, soy programador. Tengo un par de preguntas y algunas suposiciones que haré aquí (corríjame si me equivoco, por favor).

Según tengo entendido, todas las secuencias de 1 y 0 que ejecutan las computadoras son simplemente representaciones de datos reales o instrucciones que le dicen a otro hardware en un sistema qué hacer, como decirle a una tarjeta gráfica que cambie el color de los píxeles en el monitor.

01100001 es la representación de la letra "a" y el hecho de que esta secuencia de bits haya sido elegida por los padres de computing / ascii o qué tiene usted para representar esa letra, bien podría haber sido alguna otra secuencia, ¿no?

Todos los sistemas informáticos han acordado que esos bits significan la letra "a" para que todas las computadoras de todo el mundo sean interoperables, si no hubiera estándares establecidos para esto, internet sería un desastre.

Lo que quiero saber es: ¿dónde está la información almacenada en una computadora que le dice que estas secuencias de bits aquí significan / representan el carácter "a"? ¿Está en el sistema operativo o directamente en la placa base o simplemente estoy completamente equivocado?

    
pregunta Larry Lawless

3 respuestas

2

Nada le dice a 01100001 (61h) es una representación binaria ASCII de la letra 'a' ... excepto el contexto. En una computadora, lo que representa una secuencia de bits como 01100001 depende de dónde se encuentre y de cómo esté estructurado el contenedor.

En un archivo organizado en bytes, encontrará principalmente caracteres alfabéticos representados en un flujo continuo de caracteres de 8 bits en archivos de texto, por ejemplo. Ahora, si 01100001 representa la letra "a" depende de qué estándar cumple el archivo de texto que lo contiene; "a" se representa 61h en ASCII y 81h en EBCDIC , para nombrar solo dos.

Esta es una explicación simplista ya que también hay códigos de página, que se inventaron porque 256 posiciones no son suficientes para representar alfabetos internacionales. Para los archivos de texto, los sistemas operativos tienen codificaciones de caracteres , cada uno de los cuales define cómo (y qué) los caracteres se traducen a qué representación binaria .

ASCII es uno de ellos y utiliza solo 256 posiciones para [algunos de] caracteres alfabéticos y no alfabéticos en inglés, [un conjunto limitado de] puntuación y caracteres de control [no imprimibles]. ISO-8859-1 es una variante de ASCII que representa varios caracteres con acento europeo. UTF-8 , otro de ellos define una representación de bytes de longitud variable para dar cuenta de la representación de la mayoría de los caracteres en todos los idiomas.

En un sistema UNIX como GNU / Linux, el tipo de MIME muestra la codificación de caracteres que sigue un archivo de texto. Ver el comando GNU / Linux file -i

# file -i dead.letter
dead.letter:          text/plain; charset=us-ascii

Esto muestra que el archivo dead.letter es un archivo de texto que usa ASCII para su contenido. En tales tipos de archivos, 01100001 (61h) representa la letra "a". El editor que guardó el archivo determina automáticamente el tipo MIME de un archivo de texto (leído: conjunto ), según la configuración regional (también conocida como configuración regional) en que se inició el editor. El tipo MIME se puede guardar en el disco junto con el archivo de texto o adivinar en tiempo de ejecución a partir del contenido del archivo cuando se lee el archivo. Esto último es cierto, especialmente cuando se leen archivos de sistemas operativos GNU que se guardaron en Windows ya que este último no define los tipos MIME.

Una vez más, esta es una explicación resumida pero esa es la base.

    
respondido por el user59864
1

Algunas computadoras muy antiguas tenían un 'campo de tipo de datos' que especificaba cómo debían interpretarse los bits de datos, por ejemplo, como valores enteros, valores de punto flotante, datos de caracteres o instrucciones. Que yo sepa, ninguna computadora moderna hace esto: para lo que se codifica un montón de bits está totalmente determinado por el programa que utiliza los datos. Y no hay ninguna ley que indique que un programa así debe ser coherente: una vez que un grupo de bits puede representar un carácter, la próxima vez (por ejemplo, cuando los bits se envían a través de algún canal de comunicación) son solo bits sin ningún significado.

Un nivel más profundo, hay un acuerdo casi general de que los caracteres están representados por sus códigos ASCII. La forma en que se eligieron esos códigos se encuentra en la historia previa a la computadora y es totalmente irrelevante para el funcionamiento de una computadora.

El código ASCII está limitado, ya que no tiene códigos para las letras acentuadas de algunos países europeos, y no se parece mucho a los alfabetos utilizados en Grecia, Rusia y los países más lejanos que usan gráficos de ideas. Para cumplir con esos códigos de "letras" se utilizan 16 o 32 bits para cada letra.

    
respondido por el Wouter van Ooijen
0

No hay un lugar para almacenar qué código de carácter corresponde a qué carácter.

En los viejos tiempos de computación, la entrada y la visualización se realizaban en periféricos dedicados, como teletipos y terminales. Necesitaban poder traducir entre los caracteres presionados en un teclado y los códigos ASCII, y volver a mostrarlos. La computadora no tenía que entender los códigos en absoluto. Simplemente los almacenó, antes de pasarlos a otro lugar.

En estos días, más de eso está integrado en la computadora. Incluso ahora, sin embargo, la computadora no necesita realmente "saber" que 01100001 es un código ASCII para 'a'. En su lugar, habrá una tabla de consulta que traducirá los códigos clave producidos por un teclado en ASCII.

Para su visualización, la computadora busca el código de carácter en un archivo de fuente, y sigue las instrucciones de dibujo dadas para ese carácter, para dibujar algo en la pantalla. Si los diseñadores de fuentes lo hicieron bien, un humano mirando la pantalla verá el símbolo resultante como una 'a'.

Unicode funciona de la misma manera, pero utilizando caracteres de 21 bits, en lugar de los caracteres de 7 bits de ASCII.

    
respondido por el Simon B

Lea otras preguntas en las etiquetas