En informatique , un entier est une donnée de type entier , un type de données représentant un intervalle d' entiers mathématiques . Les types de données entiers peuvent avoir différentes tailles et peuvent ou non contenir des valeurs négatives. Les entiers sont généralement représentés dans un ordinateur par un groupe de chiffres binaires (bits). La taille de ce groupement varie, de sorte que l'ensemble des tailles d'entiers disponibles diffère selon les types d'ordinateurs. Le matériel informatique offre presque toujours la possibilité de représenter un registre de processeur ou une adresse mémoire par un entier.
Dans le code source d'un programme , une valeur entière est généralement spécifiée sous forme d'une séquence de chiffres, éventuellement précédée des signes + ou −. Certains langages de programmation autorisent d'autres notations, comme l'hexadécimal (base 16) ou l'octal (base 8). Certains langages de programmation permettent également l' utilisation de séparateurs de groupes de chiffres .La représentation interne de cette donnée correspond à la manière dont sa valeur est stockée dans la mémoire de l'ordinateur. Contrairement aux nombres entiers mathématiques, une donnée informatique classique possède une valeur minimale et une valeur maximale possibles.
La représentation la plus courante d'un entier positif est une chaîne de bits , utilisant le système binaire . L'ordre des octets mémoire stockant les bits varie ; voir l'endianness . La largeur , la précision ou le nombre de bits d'un type entier correspond au nombre de bits utilisés pour sa représentation. Un type entier de n bits peut coder 2ⁿ nombres ; par exemple, un type non signé représente généralement les valeurs non négatives de 0 à le décimal codé binaire (DCB) code Gray ou encore des codes de caractères imprimés tels que l'ASCII .
Il existe quatre méthodes courantes pour représenter les nombres signés dans un système de calcul binaire. La plus répandue est le complément à deux , qui permet à un entier signé de n bits de représenter les nombres de correspondance biunivoque parfaite entre les représentations et les valeurs (en particulier, pas de distinction entre +0 et −0 ), et car l'addition , la soustraction et la multiplication n'ont pas besoin de faire de distinction entre les types signés et non signés. Parmi les autres possibilités, on trouve le binaire décalé , le binaire signe-magnitude et le complément à un .
Certains langages informatiques définissent la taille des entiers indépendamment de la machine ; d’autres proposent des définitions variables selon la taille des mots du processeur sous-jacent. Toutes les implémentations de langages ne définissent pas de variables de toutes les tailles entières, et les tailles définies peuvent même ne pas être distinctes au sein d’une même implémentation. Un entier défini dans un langage de programmation peut avoir une taille différente dans un autre langage, sur un autre processeur ou dans un contexte d’exécution de taille différente ; voir architectures informatiques anciennes utilisaient des représentations décimales des entiers, stockées en décimal codé binaire (BCD) ou dans un autre format. Ces valeurs nécessitent généralement une taille de données de 4 bits par chiffre décimal (parfois appelé quartet ), généralement avec des bits supplémentaires pour le signe. De nombreux processeurs modernes offrent une prise en charge limitée des entiers décimaux en tant que type de données étendu, fournissant des instructions pour convertir ces valeurs en valeurs binaires et inversement. Selon l'architecture, les entiers décimaux peuvent avoir une taille fixe (par exemple, 7 chiffres décimaux plus un signe tiennent dans un mot de 32 bits) ou une longueur variable (jusqu'à une taille maximale de chiffre), occupant généralement deux chiffres par octet.
Types de données intégrales communes
| Morceaux | Nom | Plage (en supposant le complément à deux pour les nombres signés ) | Chiffres décimaux | Utilisations | Mises en œuvre | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| C / C++ | C# | Pascal et Delphes | Java | SQL | FORTRAN | D | Rouiller | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 4 | nibble , semi-octet | Signé : De −8 à 7, de −(2 3 ) àDécimalcodé binaire , — | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non signé : De 0 à 15, ce qui équivaut 8 | octet , octet , i8, u8 | Signé : De −128 à 127, de −(2 7 ) à Caractères ASCII , unités de code de l' encodage de caractères UTF-8 | int8_t, signed char | sbyte,System.SByte | Shortint | byte,java.lang.Byte | tinyint | INTEGER | byte | i8 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non signé : De 0 à 255, ce qui équivaut 16 | demi-mot, mot , court, i16, u16 | Signé : De −32 768 à 32 767, de −(2 15 ) à Caractères UCS-2 , unités de code dans l' encodage de caractères UTF-16 | int16_t, short, int | short,System.Int16 | Smallint | short,java.lang.Short | smallint | INTEGER | short | i16 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non signé : De 0 à 65 535, ce qui équivaut 32 | mot, long , double mot, mot long, entier, i32, u32 | Signé : De −2 147 483 648 à 2 147 483 647 , de −(2 31 ) à Caractères UTF-32 , couleurs vraies avec canal alpha, FourCC , pointeurs en calcul 32 bits | int32_t, int, long | int,System.Int32 | LongInt; Integer | int,java.lang.Integer | int | INTEGER | int | i32 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non signé : De 0 à 4 294 967 295, ce qui équivaut à 64 | mot, double mot, mot long, long, très long, quad, mot quadruple, mot q, int64, i64, u64 | Signé : De Temps (par exemple, époque Unix) , pointeurs en informatique 64 bits | int64_t, long, long long | long,System.Int64 | Int64 | long,java.lang.Long | bigint | INTEGER | long | i64 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non signé : De 0 à 128 | octaword, double quadword, i128, u128 | Signé : De Adresses IPv6 , GUID | Disponible uniquement en tant qu'extensions non standard ou spécifiques au compilateur | cent | i128 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non signé : De 0 à n | Entier n bits (cas général) | Signé : −(2 n −1 ) à ( ( Ada :n log 10 2 | C23 :unsigned _BitInt(n) | Ada : , ; bibliothèques standard ou bibliothèques arithmétiques arbitraires tierces ou classes dans de nombreux langages tels que Python, C++, etc.Les processeurs prennent en charge différents types de données entières. Généralement, le matériel supporte les types signés et non signés, mais seulement un nombre limité et fixe de valeurs possibles. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||