Stockage des données en mémoire (en parlant d'entiers)

Préface : Dans cet article, nous expliquerons les types de données en langage C et comment elles sont stockées en mémoire.

1. Introduction aux types de données

Les types de données de base du langage C sont les suivants :

type de données de caractère char 1 octet

court entier court 2 octets

int entier 4 octets

long long entier 4/8 octets (32 bits/64 bits)

longlong Entier plus long 8 octets

float Type à virgule flottante simple précision 4 octets

double Type à virgule flottante double précision 8 octets

Alors pourquoi diviser autant de types de données ?

En effet, ils occupent différentes tailles de mémoire et les utilisent pour définir différents types de variables.

Lorsque nous écrivons du code, nous devons utiliser le moins d'espace mémoire possible pour faire des choses plus importantes , ce qui nous oblige à utiliser de manière flexible différents types de données dans la programmation.

Pour les sept types de données ci-dessus, nous divisons les cinq premiers et les deux derniers en deux familles :

1. Famille entière

Comme son nom l'indique, le type entier signifie que la variable définie est un entier, mais pourquoi char est-il ici un membre de la famille des types entiers ? N'est-ce pas un type de caractère défini ?

En fait, ce que le caractère stocke dans la mémoire est la valeur du code ASCII du caractère , et la valeur du code ASCII est un entier , donc le type de caractère est classé dans le type entier.

2. Famille à virgule flottante

Les nombres à virgule flottante sont aussi ce que nous appelons habituellement des décimales, par exemple : 3,14159, la raison pour laquelle on l'appelle nombre à virgule flottante est que sa virgule décimale peut flotter à gauche et à droite , comme écrire 0,314159 * 10, ou 31,4159/10. Puisqu’il n’existe aucune connaissance importante sur les nombres à virgule flottante, nous n’expliquerons pas grand-chose ici.

3. Type de construction

En plus des types entiers et à virgule flottante, il existe également un type de données que nous définissons nous-mêmes, appelé type structurel, comprenant les suivants :

type de tableau arr[]

Structure de type structure

type d'énumération énumération

Union de type syndicat 

4. Type de pointeur

int *pi Pointeur entier

char * pointeur de caractère pc

float *pf pointeur à virgule flottante

void *pv pointeur vide

5. Type vide

void représente un type vide (pas de type)

Habituellement utilisé pour les types de retour de fonctions, les paramètres de fonctions et les types de pointeurs.

Dans ce qui suit, nous n'expliquerons que le type entier. Les quatre derniers types ne sont pas au centre de notre explication dans cet article, donc ici uniquement à des fins d'affichage, et nous ne développerons pas l'explication. Les amis ont juste besoin de comprendre.

2. Stockage des entiers en mémoire

Les ordinateurs peuvent traiter des données binaires, et les données entières et à virgule flottante sont également stockées sous forme binaire en mémoire.

Les entiers sont stockés en mémoire sous forme de séquences binaires en complément à deux.

1. Code original, code inverse, code complémentaire

Il existe trois formes binaires d'entiers, à savoir le code original, le code complémentaire et le code complémentaire .

Les trois méthodes de représentation ont toutes un bit de signe et un bit de valeur . Le bit de signe utilise "0" pour indiquer un positif et "1" pour indiquer un négatif .

Le code original, le code inverse et le code complémentaire d'un entier positif sont les mêmes .

Le complément à un de l'entier négatif est que le bit de signe du code d'origine reste inchangé, et le reste des chiffres est inversé petit à petit, et le code complémentaire est le code négatif +1.

L'explication détaillée est la suivante :

 

 Regardons séparément la mémoire occupée par les deux nombres :

Le compilateur VS que nous utilisons ici convertit le binaire en hexadécimal et l'affiche en mémoire, mais nous constatons qu'ils sont dans l'ordre opposé au binaire ci-dessus, pourquoi ?

2. Introduction en gros et petit endian

Qu’est-ce que le grand et le petit endian ?

Les grandes et petites extrémités sont respectivement le stockage big-endian et le stockage small-endian .

Stockage big-endian : stockez les données sur l'octet de poids faible d' une donnéeet stockez les données sur l'octet de poids fort à l'adresse basse de la mémoire .

Stockage petit-boutiste : stockez les données sur l'octet de poids fort d' une donnéeet stockez les données sur l'octet de poids faible à l'adresse basse de la mémoire .

Les détails sont les suivants:

 On peut voir à partir de cela que le compilateur VS que j'utilise est stocké dans l'ordre des octets petit-boutiste.

 3. Résumé

On peut dire que l'entier est le type de données le plus simple. Voici juste une explication simple de ce que j'ai appris et maîtrisé. S'il y a des lacunes, vous êtes invités à les ajouter dans la zone de commentaires. J'aime l'article du blogueur. Don' N'oubliez pas d'appuyer trois fois sur un bouton, rendez-vous dans le prochain numéro !

 

Je suppose que tu aimes

Origine blog.csdn.net/2303_78442132/article/details/132116436
conseillé
Classement