Maison > développement back-end > C++ > Représenter et manipuler des informations dans un ordinateur moderne - Partie 1

Représenter et manipuler des informations dans un ordinateur moderne - Partie 1

Patricia Arquette
Libérer: 2024-10-29 10:45:29
original
867 Les gens l'ont consulté

Comme la plupart d'entre vous le savent peut-être déjà, l'ordinateur ne peut comprendre, stocker et traiter que sur un bit (0 et 1).

Mais pourquoi ?
Il s'avère que les signaux à deux valeurs peuvent facilement être représentés, stockés et transmis de manière plus simple et plus fiable que la représentation numérique traditionnelle en base 10 - par exemple, comme la présence ou l'absence d'un trou dans une carte perforée, comme une valeur élevée ou faible. tension sur un fil, ou comme domaine magnétique orienté dans le sens des aiguilles d'une montre ou dans le sens inverse, etc.

De plus, un seul bit n'est généralement pas très utile pour représenter quelque chose de significatif en ordinateur, mais une fois que nous combinons une séquence de bits, nous pouvons représenter n'importe quel ensemble fini. par exemple, nous pouvons coder des bits en nombres négatifs/non négatifs et flottants et également coder les lettres et les symboles d'un document. C'est pourquoi (ou peut-être pas) nous utilisons 8 bits ou un octet comme plus petite unité de mémoire adressable. En notation binaire, sa valeur va de 00000000 à 11111111. Considérée sous forme d'entier décimal, sa valeur va de 0 à 255 et en hexadécimal, elle va de 00 à FF. Nous écrivons généralement les modèles de bits sous forme hexadécimale (0 - 9, A - F) car il nous est facile de convertir vers/depuis des notations binaires.

En langage de programmation C, les constantes numériques commençant par 0x ou 0X sont interprétées comme étant en hexadécimal. Les caractères « A » à « F » peuvent être écrits en majuscules ou en minuscules. Par exemple, nous pourrions écrire le nombre FA1D37B sous la forme 0xFA1D37B, sous la forme 0xfa1d37b, ou même en mélangeant des majuscules et des minuscules (par exemple, 0xFa1D37b).

D'accord, abordons encore une chose,

Tailles des données

Quelques termes CS à venir !!!

  • Mémoire virtuelle - Un large éventail conceptuel d'octets en mémoire (il y a plus mais cela viendra plus tard dans la série)

  • Adresse mémoire - Un numéro unique utilisé pour identifier un octet de mémoire.

  • Espace mémoire virtuelle - L'ensemble de toutes les adresses mémoire possibles (d'autres viendront plus tard).

  • Taille du mot - La taille nominale des données du pointeur ou la taille maximale de l'adresse de la mémoire virtuelle.

Les ordinateurs d'aujourd'hui ont une taille de mot de 32 bits ou de 64 bits, ce qui signifie que les programmes peuvent avoir accès à une plage de 0 à 2 ^ 32 - 1 (en cas de 32 bits) et de 0 à 2 ^ 64 - 1 (en cas de de 64 bits) d'adresses virtuelles. La plupart des programmes compilés sur des machines 64 bits peuvent également être exécutés sur des machines 32 bits, mais l'inverse n'est pas vrai.

Les ordinateurs et les compilateurs prennent en charge plusieurs formats de données en utilisant différentes manières de coder les données, telles que les entiers et les virgules flottantes, ainsi que différentes longueurs. Par exemple, de nombreuses machines disposent d'instructions pour manipuler des octets simples, ainsi que des nombres entiers représentés sous forme de quantités de 2, 4 et 8 octets. Ils prennent également en charge les nombres à virgule flottante représentés sous forme de quantités de 4 et 8 octets. Le nombre exact d'octets pour certains types de données dépend de la manière dont le programme est compilé. J'ai montré ci-dessous les tailles des programmes typiques 32 bits et 64 bits :

Representing and Manipulating Information in modern computer - Part 1

Pour éviter toute confusion entre le nombre de bits de la machine et les paramètres du compilateur, ISO C99 a introduit certains types de données dont la taille des données est fixe quels que soient les paramètres du compilateur ou de la machine. Comme vous pouvez le voir dans la capture d'écran ci-dessus, int32_t et int64_t en font partie. L'utilisation de types entiers de taille fixe est le meilleur moyen pour les programmeurs d'avoir un contrôle étroit sur les représentations des données.

Avant de nous déconnecter - Nous devrions essayer d'écrire du code qui peut être portable sur différentes machines et compilateurs. Un aspect de la portabilité est de rendre le programme insensible aux tailles exactes des différents types de données. Avec la transition vers les machines 64 bits, de nombreuses dépendances cachées concernant la taille des mots sont apparues sous forme de bugs lors de la migration de programmes 32 bits vers de nouvelles machines. Par exemple, de nombreux programmeurs ont historiquement supposé qu'un objet déclaré de type int pouvait être utilisé pour stocker un pointeur. Cela fonctionne bien pour la plupart des programmes 32 bits, mais cela entraîne des problèmes pour les programmes 64 bits car, comme indiqué ci-dessus, la taille des mots ou la taille du pointeur des machines 32 bits et 64 bits sera différente.

D'accord. c'est tout pour aujourd'hui. Merci.

Réf : Systèmes informatiques : le point de vue d'un programmeur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal