diferentes CPU soportan diferentes tipos de datos integrales. Normalmente, hardware de apoyo firmados y no firmados tipos, pero sólo un pequeño conjunto fijo de anchura.
la tabla anterior enumera anchos de tipo integrales que son compatibles en hardware por procesadores comunes. Los lenguajes de programación de alto nivel ofrecen más posibilidades. Es común tener un tipo integral de ‘doble ancho’ que tiene el doble de bits que el tipo más grande soportado por hardware., Muchos lenguajes también tienen tipos de campo de bits (un número especificado de bits, generalmente limitado a ser menor que el ancho máximo soportado por hardware) y tipos de rango (que pueden representar solo los enteros en un rango especificado).
algunos lenguajes, como Lisp, Smalltalk, REXX, Haskell, Python y Raku admiten enteros de precisión arbitraria (también conocidos como enteros de precisión infinita o bignums)., Otros lenguajes que no soportan este concepto como construcción de nivel superior pueden tener bibliotecas disponibles para representar números muy grandes usando matrices de variables más pequeñas, como la clase BigInteger de Java o el paquete «bigint» de Perl. Estos utilizan tanto de la memoria de la computadora como es necesario para almacenar los números; sin embargo, una computadora solo tiene una cantidad finita de almacenamiento, por lo que también pueden representar un subconjunto finito de los enteros matemáticos. Estos esquemas admiten números muy grandes, por ejemplo, un kilobyte de memoria podría usarse para almacenar números de hasta 2466 dígitos decimales.,
Un tipo booleano o Flag es un tipo que puede representar solo dos valores: 0 y 1, generalmente identificados con false y true respectivamente. Este tipo se puede almacenar en memoria usando un solo bit, pero a menudo se le da un byte completo para mayor comodidad de direccionamiento y velocidad de acceso.
Una cantidad de cuatro bits se conoce como un mordisco (cuando se come, es más pequeño que un bocado) o nybble (es un juego de palabras con la forma de la palabra byte). Un mordisco corresponde a un dígito en hexadecimal y contiene un dígito o un código de signo en decimal codificado en binario.,
Bytes y octeteseditar
el término byte inicialmente significaba ‘la unidad direccionable más pequeña de memoria’. En el pasado, 5-, 6-, 7-, 8-, y se han utilizado todos los bytes de 9 bits. También ha habido computadoras que podrían direccionar bits individuales (‘máquina con dirección de bits’), o que solo podrían direccionar cantidades de 16 o 32 bits (‘máquina con dirección de palabras’). El término byte generalmente no se usaba en absoluto en relación con máquinas con direcciones de bits y palabras.
el término octeto siempre se refiere a una cantidad de 8 bits., Se utiliza principalmente en el campo de las redes informáticas, donde las computadoras con diferentes anchos de bytes podrían tener que comunicarse.
en el uso moderno, el byte casi invariablemente significa ocho bits, ya que todos los demás tamaños han caído en desuso; por lo tanto, el byte ha llegado a ser sinónimo de octeto.
WordsEdit
prácticamente todos los nuevos procesadores de escritorio son capaces de usar palabras de 64 bits, aunque los procesadores integrados con tamaño de palabra de 8 y 16 bits siguen siendo comunes. La longitud de palabra de 36 bits era común en los primeros días de las computadoras.,
una causa importante de la no portabilidad del software es la suposición incorrecta de que todas las computadoras tienen el mismo tamaño de palabra que la computadora utilizada por el programador. Por ejemplo, si un programador que utiliza el lenguaje C declara incorrectamente como int una variable que se utilizará para almacenar valores mayores que 215-1, el programa fallará en equipos con enteros de 16 bits. Esa variable debería haber sido declarada como long, que tiene al menos 32 bits en cualquier computadora., Los programadores también pueden asumir incorrectamente que un puntero se puede convertir a un entero sin pérdida de información, que puede funcionar en (algunos) equipos de 32 bits, pero falla en equipos de 64 bits con punteros de 64 bits y enteros de 32 bits. Este problema es resuelto por C99 en stdint.h en forma de intptr_t
.
short integerEdit
un entero corto puede representar un número entero que puede tener menos almacenamiento, mientras que tiene un rango más pequeño, en comparación con un entero estándar en la misma máquina.
En C, se denota por corto., Se requiere que sea al menos 16 bits, y a menudo es más pequeño que un entero estándar, pero esto no es necesario. Un programa conforme puede asumir que puede almacenar de forma segura valores entre −(215-1) y 215-1, pero no puede asumir que el rango no es mayor. En Java, un short es siempre un entero de 16 bits. En la API de Windows, el tipo de datos SHORT se define como un entero con signo de 16 bits en todas las máquinas.,>−32,768
Long integerEdit
A long integer can represent a whole integer whose range is greater than or equal to that of a standard integer on the same machine.,
en C, se denota por largo. Se requiere que tenga al menos 32 bits, y puede o no ser mayor que un entero estándar. Un programa conforme puede asumir que puede almacenar de forma segura valores entre −(231-1) y 231-1, pero no puede asumir que el rango no es mayor.
Long longEdit
en la versión C99 del lenguaje de programación C y la versión C++11 de C++, se admite un tipo long long
que tiene el doble de la capacidad mínima del estándar long
. Este tipo no es compatible con compiladores que requieren que el código C sea compatible con el estándar anterior de C++, C++03, porque el tipo long long no existía en C++03. Para un compilador que cumple con ANSI / ISO, se deben cumplir los requisitos mínimos para los rangos especificados, es decir, −(263-1) a 263-1 para signed y 0 a 264-1 para unsigned; sin embargo, se permite ampliar este rango., Esto puede ser un problema al intercambiar código y datos entre plataformas, o hacer acceso directo al hardware. Por lo tanto, hay varios conjuntos de encabezados que proporcionan tipos de ancho exacto independientes de la plataforma. La biblioteca estándar C proporciona stdint.h; esto fue introducido en C99 y C++11.