Relación entre la longitud de la palabra, tamaño de los caracteres, el tamaño y el byte número entero

StackOverflow https://stackoverflow.com/questions/698312

  •  22-08-2019
  •  | 
  •  

Pregunta

¿Cuál es la relación entre la longitud de la palabra, tamaño de los caracteres, el tamaño del número entero, y el byte en C ++?

¿Fue útil?

Solución

La norma requiere que ciertos tipos tienen mínimo tamaños (corto es al menos 16 bits, int es de al menos 16 bits, etc.), y que algunos grupos de tipo están clasificadas (sizeof(int)> = sizeof(short) > = sizeof(char)).

Otros consejos

En C ++ un char debe ser lo suficientemente grande como para contener cualquier carácter en el juego de caracteres básicos de la Implementación.

int tiene el "tamaño natural, sugerido por la arquitectura del entorno de ejecución". Tenga en cuenta que esto significa que un int hace no tiene que ser al menos de 32 bits de tamaño. Implementaciones donde int es de 16 bits son comunes (piensa incrustados ot MS-DOS).

La siguiente son tomados de diversas partes del C ++ 98 y normas C99:

  • long int tiene que ser al menos tan grande como int
  • int tiene que ser al menos tan grande como short
  • short tiene que ser al menos tan grande como char

Tenga en cuenta que todos ellos podrían ser del mismo tamaño.

También (suponiendo que la aplicación de complemento de dos):

  • long int tiene que ser de al menos 32 bits
  • int tiene que ser de al menos 16 bits
  • short tiene que ser de al menos 16 bits
  • char tiene que ser de al menos 8 bits

El estándar no conoce esta "palabra" THINGY utilizado por los procesadores. Pero dice que el tipo "int" debe tener el tamaño natural de un entorno de ejecución. Pero incluso para entornos de 64 bits, int es por lo general sólo 32 bits. Así "palabra" en términos estándar tiene prácticamente ningún significado común (a excepción de la "palabra" común Inglés, por supuesto).

Tamaño de caracteres es el tamaño de un personaje. Depende de lo que se habla de carácter. tipos de caracteres son carbón, carbón de leña sin firmar y signed char. También wchar_t se utiliza para almacenar caracteres que pueden tener cualquier tamaño (determinado por la aplicación - sino que debe utilizar uno de los tipos enteros como su tipo subyacente Al igual que las enumeraciones.), Mientras que char / signed char o unsigned char tiene que tener un byte. Eso significa que un byte tiene la mayor cantidad de bits de carbón tiene como uno. Si una aplicación dice un objeto de tipo char tiene 16 bits, a continuación, un byte tiene 16 bits también.

Ahora, un byte es el tamaño que ocupa una Char. Es una unidad, no un tipo específico. No hay mucho más sobre él, sólo que es la unidad que se puede acceder a la memoria. Es decir que no tiene acceso puntero a campos de bits, pero tiene acceso a las unidades a partir de un byte.

"tamaño Entero" ahora es bastante amplia. ¿Qué quieres decir? Todas bool, char, short, int, largo y sus homólogos unsinged son enteros. Su rango es lo que yo llamaría "tamaño entero" y que está documentado en el estándar C - recibidas por el estándar de C ++. Para firmado Char el rango es de -127 <-> 127, para abreviar e INT es el mismo y es -2 ^ 15 + 1 <-> 2 ^ 15-1 y por mucho tiempo que es -2 ^ 31 + 1 < -> 2 ^ 31-1. Sus homólogos sin firmar van desde 0 hasta 2 ^ 8-1, 2 ^ 16-1 y 2 ^ 32-1 respectivamente. Esos son los tamaños mínimos sin embargo. Esto es, un int puede que no tenga la talla máxima de 2 ^ 14 en cualquier plataforma, ya que es menos de 2 ^ 15-1, por supuesto. De ello se deduce para aquellos valores que se requiere un mínimo de bits. Char que es 8, por sus siglas / int que tiene 16 años y por mucho tiempo que es 32. representación en complemento a dos para los números negativos no se requiere, por lo que el valor negativo no se -128 en lugar de -127 por ejemplo para signed char.

estándar de C ++ no tiene un tipo de datos llamado word o byte. El resto están bien definidos como intervalos. La base es un char que tiene de bits CHAR_BITS. El valor más comúnmente utilizada de CHAR_BITS es 8.

sizeof (char) == 1 (un byte) (en C ++, en C - no especificado)
sizeof (int)> = sizeof (char)
palabra - no c ++ tipo, usualy en la arquitectura de computadores significa 2 bytes

Un poco depende de lo que entendemos por relación. El tamaño de los tipos numéricos es generalmente un múltiplo del tamaño de palabra máquina. Un byte es un byte es un byte - 8 bits, no más, no menos. Un personaje se define en la norma como un solo byte sin signo Creo (compruebe su ARM para más detalles).

La regla general es, no hacer ninguna suposición sobre el tamaño real de los tipos de datos. La norma especifica las relaciones entre los tipos, tales como un número entero "largo" serán ya sea del mismo tamaño o mayor que un "int". implementaciones individuales de la lengua tomarán tamaños específicos para los tipos que son convenientes para ellos. Por ejemplo, un compilador para un procesador de 64 bits será elegir diferentes tamaños que un compilador para un procesador de 32 bits.

Puede utilizar el operador sizeof () para examinar los tamaños específicos para el compilador que está utilizando (en la arquitectura objetivo específico).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top