CS- Semaine 4
Dec 31, 2024 pm 06:24 PMPixels
LesLes 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 :
RVB (Rouge, Vert, Bleu) sont des nombres représentant la quantité de chaque couleur. Dans Adobe Photoshop nous voyons ces paramètres :
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
LeLe 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 :
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 :
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 :
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.
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 :
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 :
s indique au compilateur où se trouve le premier octet de la valeur donnée :
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 typechaî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 :
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); }
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.
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 :
#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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Gulc: Cibliothèque C construite à partir de zéro

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Utilisation distincte et partage de phrases

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
