Article de reference

Entier (informatique)

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 d...

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.

Valeur et représentation

La valeur d'un élément de type entier est l'entier mathématique auquel elle correspond. Les types entiers peuvent être non signés (capables de représenter uniquement des entiers non négatifs) ou signés (capables de représenter également des entiers négatifs).

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 à D'autres codages des valeurs entières en séquences de bits sont parfois utilisés, par exemple le décimal codé binaire (DCB) le 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 à L'arithmétique en complément à deux est pratique car il existe une 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 Mots .

Certaines 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

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.

Le tableau ci-dessus répertorie les largeurs de types entiers prises en charge matériellement par les processeurs courants. Les langages de programmation de haut niveau offrent davantage de possibilités. Il est fréquent de disposer d'un type entier « double largeur » possédant deux fois plus de bits que le type le plus large pris en charge matériellement. De nombreux langages proposent également des types de champs de bits (un nombre spécifié de bits, généralement inférieur à la largeur maximale prise en charge matériellement) et des types d'intervalle (qui ne peuvent représenter que les entiers compris dans un intervalle spécifié).

Certains langages, comme Lisp , Smalltalk , REXX , Haskell , Python et Raku , prennent en charge les entiers à précision arbitraire (également appelés entiers à précision infinie ou grands nombres ). D'autres langages, qui ne prennent pas en charge ce concept de manière native, peuvent proposer des bibliothèques permettant de représenter de très grands nombres à l'aide de tableaux de variables plus petites, comme la java.math.BigIntegerclasse `int` de Java ou le package `int` de Perlbigint . Ces bibliothèques utilisent la mémoire vive nécessaire au stockage des nombres ; cependant, la capacité de stockage d'un ordinateur étant limitée, elles ne peuvent représenter qu'un sous-ensemble fini des entiers mathématiques. Ces méthodes permettent de gérer des nombres très grands ; par exemple, un kilooctet de mémoire peut être utilisé pour stocker des nombres comportant jusqu'à 2 466 chiffres décimaux.

Un type booléen ne peut représenter que deux valeurs : 0 et 1, généralement associées respectivement à faux et vrai . Ce type peut être stocké en mémoire sur un seul bit, mais on lui alloue souvent un octet entier pour faciliter l’adressage et accélérer l’accès.

Une quantité de quatre bits est appelée un nibble (en référence à la taille d'une bouchée ) ou nybble (jeu de mots avec le mot octet ). Un nibble correspond à un chiffre en hexadécimal et contient un chiffre ou un code de signe en décimal codé binaire.

Octets et octets

Le terme « mot » désigne un petit groupe de bits traités simultanément par les processeurs d'une architecture particulière . La taille d'un mot est donc spécifique au processeur. De nombreuses tailles de mots différentes ont été utilisées, notamment 6, 8, 12, 16, 18, 24, 32, 36, 39, 40, 48, 60 et 64 bits. Étant donné son caractère architectural, la taille d'un mot est généralement définie par le premier processeur d'une famille, plutôt que par les caractéristiques d'un processeur compatible ultérieur. La signification des termes dérivés de « mot » , tels que « longword » , « doubleword » , « quadword » et « halfword » , varie également selon le processeur et le système d'exploitation.

La quasi-totalité des nouveaux processeurs de bureau sont compatibles avec les mots de 64 bits, bien que les processeurs embarqués utilisant des mots de 8 et 16 bits restent courants. La longueur de mot de 36 bits était fréquente aux débuts de l'informatique.

Une cause importante de la non-portabilité des logiciels est l'hypothèse erronée que tous les ordinateurs ont la même taille de mot que celui utilisé par le programmeur. Par exemple, si un programmeur utilisant le langage C déclare incorrectement intune variable qui stockera des valeurs supérieures à 2 <sup>15 </sup> - 1, le programme échouera sur les ordinateurs utilisant des entiers 16 bits. Cette variable aurait dû être déclarée comme un entier long, qui possède au moins 32 bits sur n'importe quel ordinateur. Les programmeurs peuvent également supposer à tort qu'un pointeur peut être converti en entier sans perte d'information, ce qui peut fonctionner sur certains ordinateurs 32 bits, mais échouer sur les ordinateurs 64 bits avec des pointeurs 64 bits et des entiers 32 bits. Ce problème est résolu par C99 dans stdint.h sous la forme de `int` intptr_t.

L’ architecture (bits /bits) d’un programme peut faire référence à la taille des mots (ou au nombre de bits) du processeur sur lequel il s’exécute, ou à la largeur d’une adresse mémoire ou d’un pointeur, qui peut varier selon les modes d’exécution ou les contextes. Par exemple, les versions 64 bits de Microsoft Windows prennent en charge les binaires 32 bits existants, et les programmes compilés pour l’ABI x32 de Linux s’exécutent en mode 64 bits tout en utilisant des adresses mémoire 32 bits.

Entier standard

La taille standard des entiers dépend de la plateforme.

En C , il est noté intet doit être d'au moins 16 bits. Les systèmes Windows et Unix ont intdes registres 32 bits sur les architectures 32 bits et 64 bits.

Entier court

Un entier court peut représenter un nombre entier qui occupe moins d'espace de stockage, tout en ayant une plage de valeurs plus restreinte, comparé à un entier standard sur la même machine.

En C , il est noté `int` short. Il doit être codé sur au moins 16 bits et est souvent plus petit qu'un entier standard, mais cela n'est pas obligatoire. Un programme conforme peut supposer qu'il peut stocker en toute sécurité des valeurs comprises entre et , mais il ne peut pas supposer que l'intervalle n'est pas plus grand. En Java , `int` shortest API Windows , le type de données SHORTest défini comme un entier signé de 16 bits sur toutes les machines.

Entier long

Un entier long peut représenter un entier dont la plage est supérieure ou égale à celle d'un entier standard sur la même machine.

En C , il est noté `int` long. Il doit être d'au moins 32 bits et peut être supérieur ou inférieur à un entier standard. Un programme conforme peut supposer qu'il peut stocker en toute sécurité des valeurs comprises entre et −

Long long

n'existait pas dans cette dernière. Pour un compilateur conforme aux normes ANSI/ISO, les exigences minimales pour les plages spécifiées, soit de à pour les nombres signés et de 0 à pour les nombres non signés, doivent être respectées ; toutefois, l'extension de cette plage est autorisée. Cela peut poser problème lors de l'échange de code et de données entre plateformes, ou lors d'un accès direct au matériel. C'est pourquoi plusieurs ensembles d'en-têtes fournissent des types de largeur exacte indépendants de la plateforme. La bibliothèque standard C fournit `<stdint.h> `. Ceci a été introduit dans C99 et C++11.long longlong"}},"i":0}}]

Syntaxe

  • Java : , java.lang.Integer.MAX_VALUEjava.lang.Integer.MIN_VALUE
    Des champs correspondants existent pour les autres classes d'entiers en Java.
  • C : INT_MAX, INT_MIN, etc.
    • GLib : G_MININT, G_MAXINT, G_MAXUINT, ...
  • C++ : , , etc. std::numeric_limits<int>::max()std::numeric_limits<int>::min()
  • Haskell : Pascal :MaxInt
  • Python 2 : sys.maxint
  • Python 3 : sys.maxsize
  • Rouille : , , etc. i32::MAXi32::MIN
  • Turing :

    Plus d articles de Worldlex Wiki

    Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

    Explorer l index