stringtranslate.com

Carácter (informática)

Diagrama de datos de cadena en computación. Muestra la palabra "ejemplo" con cada letra en un cuadro separado. La palabra "Cadena" está arriba y hace referencia a la oración completa. La etiqueta "Carácter" está debajo y apunta a un cuadro individual.
Una cadena de siete caracteres

En la terminología de las computadoras y las telecomunicaciones basadas en máquinas , un carácter es una unidad de información que corresponde aproximadamente a un grafema , una unidad similar a un grafema o un símbolo , como en un alfabeto o silabario en la forma escrita de un lenguaje natural . [1]

Entre los ejemplos de caracteres se incluyen letras , dígitos numéricos , signos de puntuación comunes (como "." o "-") y espacios en blanco . El concepto también incluye caracteres de control , que no corresponden a símbolos visibles sino a instrucciones para formatear o procesar el texto. Entre los ejemplos de caracteres de control se incluyen el retorno de carro y la tabulación, así como otras instrucciones para impresoras u otros dispositivos que muestran o procesan texto de otro modo.

Los caracteres normalmente se combinan en cadenas .

Históricamente, el término carácter se utilizaba para denotar un número específico de bits contiguos . Aunque hoy en día se supone que un carácter se refiere a 8 bits (un byte ), otras opciones como el código de caracteres de 6 bits fueron populares en su momento [2] [3] y el código Baudot de 5 bits también se ha utilizado en el pasado. El término incluso se ha aplicado a 4 bits [4] con solo 16 valores posibles. Todos los sistemas modernos utilizan una secuencia de tamaño variable de estas piezas de tamaño fijo; por ejemplo, UTF-8 utiliza un número variable de unidades de código de 8 bits para definir un " punto de código " y Unicode utiliza un número variable de ellas para definir un "carácter".

Codificación

Los ordenadores y los equipos de comunicación representan caracteres mediante una codificación de caracteres que asigna a cada carácter algo (normalmente, una cantidad entera representada por una secuencia de dígitos ) que se puede almacenar o transmitir a través de una red . Dos ejemplos de codificaciones habituales son ASCII y la codificación UTF-8 para Unicode . Aunque la mayoría de las codificaciones de caracteres asignan caracteres a números o secuencias de bits, el código Morse representa caracteres mediante una serie de impulsos eléctricos de longitud variable.

Terminología

Históricamente, el término carácter ha sido ampliamente utilizado por los profesionales de la industria para referirse a un carácter codificado , a menudo según lo definido por el lenguaje de programación o API . Del mismo modo, el término conjunto de caracteres se ha utilizado ampliamente para referirse a un repertorio específico de caracteres que se han asignado a secuencias de bits o códigos numéricos específicos. El término glifo se utiliza para describir una apariencia visual particular de un carácter. Muchas fuentes de computadora consisten en glifos que están indexados por el código numérico del carácter correspondiente.

Con la llegada y la aceptación generalizada de Unicode [5] y los conjuntos de caracteres codificados independientes de bits , [ aclaración necesaria ] un carácter se considera cada vez más como una unidad de información , independiente de cualquier manifestación visual particular. La norma internacional ISO/IEC 10646 (Unicode) define carácter , o carácter abstracto , como "un miembro de un conjunto de elementos utilizados para la organización, control o representación de datos". La definición de Unicode complementa esto con notas explicativas que alientan al lector a diferenciar entre caracteres, grafemas y glifos, entre otras cosas. Tal diferenciación es un ejemplo del tema más amplio de la separación de presentación y contenido .

Por ejemplo, los matemáticos suelen utilizar la letra hebrea aleph ("א") para denotar ciertos tipos de infinito (ℵ), pero también se utiliza en textos hebreos comunes. En Unicode, estos dos usos se consideran caracteres diferentes y tienen dos identificadores numéricos Unicode diferentes (" puntos de código "), aunque pueden representarse de forma idéntica. Por el contrario, el logograma chino para el agua ("水") puede tener una apariencia ligeramente diferente en textos japoneses que en textos chinos, y las tipografías locales pueden reflejar esto. Pero, no obstante, en Unicode se consideran el mismo carácter y comparten el mismo punto de código.

El estándar Unicode también diferencia entre estos caracteres abstractos y los caracteres codificados o caracteres codificados que han sido emparejados con códigos numéricos que facilitan su representación en los ordenadores.

Combinando carácter

El carácter de combinación también se aborda en Unicode. Por ejemplo, Unicode asigna un punto de código a cada uno de

Esto permite codificar el carácter medio de la palabra 'naïve' como un solo carácter 'ï' o como una combinación del carácter 'i' con la diéresis combinatoria: (U+0069 LETRA I MINÚSCULA LATINA + U+0308 DIÉRESIS COMBINANTE); esto también se representa como 'ï' .

Estos se consideran canónicamente equivalentes según el estándar Unicode.

carbonizarse

Un char en el lenguaje de programación C es un tipo de datos con un tamaño de exactamente un byte , [6] [7] que a su vez se define como lo suficientemente grande como para contener cualquier miembro del "conjunto de caracteres de ejecución básica". El número exacto de bits se puede verificar mediante CHAR_BITuna macro. Con mucho, el tamaño más común es de 8 bits, y el estándar POSIX requiere que sea de 8 bits. [8] En los estándares C más nuevos, se requiere que char contenga unidades de código UTF-8 [6] [7] que requieren un tamaño mínimo de 8 bits.

Un punto de código Unicode puede requerir hasta 21 bits. [9] Esto no cabe en un carácter en la mayoría de los sistemas, por lo que se utiliza más de uno para algunos de ellos, como en la codificación de longitud variable UTF-8 , donde cada punto de código ocupa entre 1 y 4 bytes. Además, un "carácter" puede requerir más de un punto de código (por ejemplo, en la combinación de caracteres ), dependiendo de lo que se entienda por la palabra "carácter".

El hecho de que históricamente un carácter se almacenaba en un único byte llevó a que los dos términos ("char" y "character") se utilizaran indistintamente en la mayoría de la documentación. Esto a menudo hace que la documentación sea confusa o engañosa cuando se utilizan codificaciones multibyte como UTF-8, y ha llevado a implementaciones ineficientes e incorrectas de funciones de manipulación de cadenas (como calcular la "longitud" de una cadena como un recuento de unidades de código en lugar de bytes). La documentación POSIX moderna intenta solucionar esto, definiendo "character" como una secuencia de uno o más bytes que representan un único símbolo gráfico o código de control, e intenta utilizar "byte" cuando se hace referencia a datos char. [10] [11] Sin embargo, todavía contiene errores como definir una matriz de char como una matriz de caracteres (en lugar de una matriz de bytes ). [12]

Unicode también se puede almacenar en cadenas formadas por unidades de código más grandes que char . Se denominan " caracteres anchos ". El tipo original de C se llamaba wchar_t . Debido a que algunas plataformas definen wchar_t como 16 bits y otras lo definen como 32 bits, las versiones recientes han añadido char16_t , char32_t . Incluso en ese caso, los objetos que se almacenan pueden no ser caracteres; por ejemplo, el UTF-16 de longitud variable suele almacenarse en matrices de char16_t .

Otros lenguajes también tienen un tipo char . Algunos, como C++, utilizan al menos 8 bits como C. [7] Otros, como Java, utilizan 16 bits para char con el fin de representar valores UTF-16.

Véase también

Referencias

  1. ^ "Definición de CARÁCTER". Merriam-Webster . Consultado el 1 de abril de 2018 .
  2. ^ Dreyfus, Phillippe (1958). "Diseño del sistema Gamma 60". Managing Requirements Knowledge, International Workshop on, Los Angeles . Nueva York. pp. 130–133. doi :10.1109/AFIPS.1958.32. […] Se utiliza el código de datos internos: los datos cuantitativos (numéricos) se codifican en un código decimal de 4 bits; los datos cualitativos (alfanuméricos) se codifican en un código alfanumérico de 6 bits. El código de instrucción interna significa que las instrucciones se codifican en código binario directo. En cuanto a la longitud de la información interna, el quantum de información se denomina " catena " y está compuesto de 24 bits que representan 6 dígitos decimales o 4 caracteres alfanuméricos. Este quantum debe contener un múltiplo de 4 y 6 bits para representar un número entero de caracteres decimales o alfanuméricos. Se determinó que veinticuatro bits era un buen compromiso entre el mínimo de 12 bits, que llevaría a un flujo de transferencia demasiado bajo desde una memoria central de lectura paralela, y 36 bits o más, que se consideró un quantum de información demasiado grande. La catena debe considerarse como el equivalente de un carácter en máquinas de longitud de palabra variable , pero no puede llamarse así, ya que puede contener varios caracteres. Se transfiere en serie hacia y desde la memoria principal. Como no se quería llamar a un "quantum" una palabra, o a un conjunto de caracteres una letra (una palabra es una palabra y un quantum es otra cosa), se creó una nueva palabra y se la llamó "catena". Es una palabra inglesa y existe en el diccionario Webster, aunque no en francés. La definición de Webster de la palabra catena es "una serie conectada"; por lo tanto, un elemento de información de 24 bits. La palabra catena se utilizará a continuación. Por lo tanto, se ha definido el código interno. Ahora bien, ¿cuáles son los códigos de datos externos? Éstos dependen principalmente del dispositivo de manejo de información involucrado. La Gamma 60  [fr] está diseñada para manejar información relevante para cualquier estructura codificada en binario. Por lo tanto, una tarjeta perforada de 80 columnas se considera como un elemento de información de 960 bits; 12 filas multiplicadas por 80 columnas equivalen a 960 perforaciones posibles; se almacena como una imagen exacta en 960 núcleos magnéticos de la memoria principal con 2 columnas de tarjeta que ocupan una cadena. […]


  3. ^ Blaauw, Gerrit Anne ; Brooks Jr., Frederick Phillips ; Buchholz, Werner (1962), "4: Natural Data Units" (PDF) , en Buchholz, Werner (ed.), Planning a Computer System – Project Stretch , McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., pp. 39–40, LCCN  61-10466, archivado (PDF) del original el 2017-04-03 , recuperado 2017-04-03 , […] Los términos utilizados aquí para describir la estructura impuesta por el diseño de la máquina, además de bit , se enumeran a continuación. Byte denota un grupo de bits utilizados para codificar un carácter, o el número de bits transmitidos en paralelo hacia y desde unidades de entrada-salida. Aquí se utiliza un término distinto de carácter porque un carácter determinado puede representarse en diferentes aplicaciones mediante más de un código, y los diferentes códigos pueden utilizar diferentes cantidades de bits (es decir, diferentes tamaños de byte). En la transmisión de entrada-salida, la agrupación de bits puede ser completamente arbitraria y no tener relación con los caracteres reales. (El término se acuñó de bite , pero se volvió a escribir para evitar una mutación accidental a bit ). Una palabra consiste en la cantidad de bits de datos transmitidos en paralelo desde o hacia la memoria en un ciclo de memoria. Por lo tanto, el tamaño de palabra se define como una propiedad estructural de la memoria. (El término catena fue acuñado para este propósito por los diseñadores de la computadora Bull GAMMA 60  [fr] ). Bloque se refiere a la cantidad de palabras transmitidas hacia o desde una unidad de entrada-salida en respuesta a una sola instrucción de entrada-salida. El tamaño de bloque es una propiedad estructural de una unidad de entrada-salida; puede haber sido fijado por el diseño o dejarse que varíe por el programa. […]


  4. ^ "Términos y abreviaturas". Manual de programación en lenguaje ensamblador MCS-4 - Manual de programación del sistema de microcomputadoras INTELLEC 4 (PDF) (edición preliminar). Santa Clara, California, EE. UU.: Intel Corporation . Diciembre de 1973. págs. v, 2-6. MCS-030-1273-1. Archivado (PDF) desde el original el 2020-03-01 . Consultado el 2020-03-02 . […] Bit : la unidad de información más pequeña que se puede representar. (Un bit puede estar en uno de dos estados: 1 0 o 1). […] Byte : un grupo de 8 bits contiguos que ocupan una sola ubicación de memoria. […] Carácter: un grupo de 4 bits de datos contiguos. […](NB. Este manual de Intel 4004 utiliza el término carácter para referirse a entidades de datos de 4 bits en lugar de 8 bits . Intel pasó a utilizar el término más común "nibble" para entidades de 4 bits en su documentación para el procesador siguiente, el 4040 , ya en 1974.)
  5. ^ Davis, Mark (5 de mayo de 2008). "Pasando a Unicode 5.1". Blog de Google . Consultado el 28 de septiembre de 2008 .
  6. ^ ab "§5.2.4.2.1 Tamaños de los tipos enteros <limits.h> / §6.2.5 Tipos / §6.5.3.4 Los operadores sizeof y _Alignof". ISO/IEC 9899:2018 - Tecnología de la información -- Lenguajes de programación -- C. {{cite book}}: |website=ignorado ( ayuda )
  7. ^ abc "§1.7 El modelo de memoria de C++ / §5.3.3 Sizeof". ISO/IEC 14882:2011.
  8. ^ "<limits.h>". pubs.opengroup.org . Consultado el 1 de abril de 2018 .
  9. ^ "Glosario de términos Unicode – Punto de código" . Consultado el 14 de mayo de 2019 .
  10. ^ "Definición POSIX de Carácter".
  11. ^ "Referencia de cadena POSIX".
  12. ^ "Definición POSIX de matriz de caracteres".

Enlaces externos