CS- Semaine 4

Barbara Streisand
Barbara Streisandoriginal
2024-12-31 18:24:10726parcourir

Pixels

Les

Les pixels sont les plus petits points colorés qui composent une image.
Si nous imaginons l'image comme composée de zéros et de uns, les zéros représentent le noir et les uns représentent le blanc :

CS- Week 4

RVB (Rouge, Vert, Bleu) sont des nombres représentant la quantité de chaque couleur. Dans Adobe Photoshop nous voyons ces paramètres :

CS- Week 4

Nous pouvons voir dans l'image ci-dessus comment la quantité sélectionnée de rouge, de vert et de bleu change la couleur. On peut également voir sur cette image que la couleur n'est pas représentée par seulement trois valeurs, mais par une valeur composée de nombres et de symboles spéciaux. Par exemple, la valeur 255 est représentée par FF.


Hexadécimal

Le

Le système de nombres hexadécimaux est un système de numérotation basé sur l'écriture de nombres utilisant seulement 16 caractères. Ils sont les suivants :

0 1 2 3 4 5 6 7 8 9 A B C D E F

Dans le système numérique hexadécimal, chaque colonne représente 16 niveaux.
0 – 00 comme
1 – 01 comme
9 – comme 09
10 – comme 0A
15 – comme 0F
16 – 10 comme
255 est exprimé en FF car 16 x 15 (ou F) est égal à 240 plus 15 pour faire 255. Il s'agit du plus grand nombre à deux chiffres pouvant être représenté en hexadécimal.

Le système de nombres hexadécimaux permet d'exprimer les données sous une forme plus courte. Par conséquent, il est pratique d'exprimer les informations de manière plus compacte.


Mémoire

Si nous numérotons les blocs de mémoire en utilisant le système de numérotation hexadécimal, nous pouvons les imaginer comme suit :

CS- Week 4

Il peut être difficile de déterminer si le bloc 10 sur la figure représente un emplacement mémoire ou la valeur 10. Par conséquent, tous les nombres hexadécimaux sont généralement représentés par le préfixe 0x :

CS- Week 4

On attribue la valeur 50 à la variable entière n :

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%i\n", n);
}

La manière dont le programme stocke cette valeur en mémoire peut être visualisée comme suit :

CS- Week 4

Le langage C possède les opérateurs de manipulation de mémoire suivants :

  • & – Donne l'adresse d'une valeur en mémoire.
  • * – Indique au compilateur d'accéder à l'emplacement mémoire.

Si nous voulons connaître l'adresse mémoire de notre n apprenant, nous pouvons modifier notre code ci-dessus comme suit :

0 1 2 3 4 5 6 7 8 9 A B C D E F

%p – vous permet de voir l'adresse d'un emplacement mémoire. Et &n renvoie l'adresse de la variable n en mémoire commençant par 0x lorsque nous exécutons le code.


Pointeurs

Pointeur est une variable qui stocke l'adresse de cette valeur dans la mémoire de l'ordinateur.

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%i\n", n);
}

Où p est un pointeur qui contient l'adresse d'un entier n.

CS- Week 4

Les pointeurs sont généralement stockés sous forme de valeurs de 8 octets. p stocke l'adresse de la valeur 50 dans l'image ci-dessus.
Nous pouvons considérer un pointeur comme une flèche pointant d'un emplacement de la mémoire à un autre :

CS- Week 4


Chaîne

String est simplement un tableau de caractères. Par exemple, la chaîne s = "HI!" peut être représentée dans la mémoire de l'ordinateur comme :

CS- Week 4

Un pointeur appelé

s indique au compilateur où se trouve le premier octet de la valeur donnée :

CS- Week 4

Nous pouvons créer une

variable chaîne comme suit :

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%p\n", &n);
}

Le code ci-dessus imprime un tableau de caractères commençant à la position s.


Comparaison de chaînes

Nous comparons les valeurs des variables de type

chaîne de données entre elles :

int n = 50;
int *p = &n;

Dans notre code ci-dessus, nous donnons à nos variables s et t le même "Salut !" même si on donne la valeur "Différent", un message apparaît à l'écran en conséquence.
Pour savoir pourquoi cela se produit, nous pouvons donner la même valeur à nos variables s et t et les représenter dans la mémoire de l'ordinateur comme suit :

CS- Week 4

Le code ci-dessus essaie donc en fait de comparer les emplacements mémoire des variables s et t, pas leurs valeurs.


Copier

Donnons le code suivant :

#include <stdio.h>

int main(void)
{
    char *s = "HI!";
    printf("%s\n", s);
}
Dans

string t = s, l'adresse de s est copiée dans t. Cela ne produit pas le résultat souhaité car la valeur n'est pas copiée - seule son adresse est copiée.

CS- Week 4

s et t pointent vers les mêmes blocs de mémoire. Nous ne pouvions pas copier sa valeur de s vers t, mais ils sont devenus deux pointeurs pointant vers une seule chaîne.

malloc - permet au programmeur d'allouer un bloc de mémoire d'une certaine taille.
libre – demande à l'ordinateur de libérer le bloc de mémoire précédemment alloué.
On change le code pour créer une vraie copie :

0 1 2 3 4 5 6 7 8 9 A B C D E F

malloc(strlen(s) 1) - Ajoute un à la longueur de la variable s et alloue de l'espace pour son caractère. Ensuite, via la boucle for, les valeurs de s sont copiées dans t.


Valeurs des déchets

Si l'on demande au compilateur un bloc de mémoire, rien ne garantit que cette mémoire sera libre. La mémoire allouée peut avoir été utilisée par l'ordinateur auparavant, il est donc possible qu'il y ait des valeurs indésirables :

CS- Week 4

#include <stdio.h>

int main(void)
{
    int n = 50;
    printf("%i\n", n);
}

Lorsque nous exécutons ce code, 1024 emplacements mémoire sont alloués au tableau, mais lorsque nous affichons les valeurs des éléments du tableau à l'aide d'une boucle for, nous voyons qu'ils ne sont pas tous 0.

Chaque fois que nous demandons à l'ordinateur d'allouer de la mémoire à une variable, il est recommandé de l'initialiser à 0 ou à une autre valeur.

Cet article utilise la source CS50x 2024.

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!

Déclaration:
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