Constantes et variables entières
Une constante est une entité dont la valeur reste immuable tout au long de l'exécution du programme (par exemple, une valeur numérique fixe). À l'inverse, une variable représente un espace de stockage dont le contenu peut évoluer. Elle se définit par trois caractéristiques : un identifiant (nom), un type de données et une valeur. En C, une variable doit être déclarée avant utilisation :
int compteur = 42;
Mémoire vive (RAM) et mémoire morte (ROM)
RAM (Random Access Memory) : Il s'agit d'une mémoire volatile. Les données sont perdues lorsque l'alimentation est coupée. Elle offre des vitesses de lecture et d'écriture très élevées et sert de zone de travail temporaire pour le processeur.
ROM (Read-Only Memory) : C'est une mémoire non volatile qui conserve les informations même sans alimentation. Les données y sont généralement inscrites lors de la fabrication. Elle est utilisée pour stocker des instructions critiques et permanentes, comme le BIOS ou les firmwares des systèmes embarqués.
Bits et octets
Le bit (binary digit) est l'unité d'information la plus élémentaire, ne pouvant prendre que deux valeurs : 0 ou 1. L'octet (byte) est l'unité de stockage de base, composée de 8 bits.
Les multiples standards suivent une base binaire :
- 1 Kilo-octet (Ko) = 1024 octets
- 1 Méga-octet (Mo) = 1024 Ko
- 1 Giga-octet (Go) = 1024 Mo
- 1 Téra-octet (To) = 1024 Go
Règles de nommage des identifiants
Un identifiant sert à nommer les variables, fonctions, classes et autres entités. Sa syntaxe obéit à des règles strictes :
- Il ne peut contenir que des lettres (a-z, A-Z), des chiffres (0-9) et des underscores (_).
- Il ne doit jamais commencer par un chiffre.
- La casse est significative (majuscules et minuscules sont distinctes).
- L'utilisation de mots-clés réservés du langage (comme
int,return) est interdite.
Techniques de commentaire de code
Les commentaires sont ignorés par le compilateur et servent à documenter le code.
Commentaire sur une seule ligne : débute par // et s'étend jusqu'à la fin de la ligne.
// Initialisation de la variable de configuration
Commentaire multiligne : encadré par /* et */.
/*
Ce bloc explique la logique
de traitement des données
*/
Commentaire conditionnel (désactivation de bloc) : utilise les directives du préprocesseur pour exclure du code de la compilation.
#if 0
int ancienneValeur = 100;
printf("%d", ancienneValeur);
#endif
Conversions entre systèmes de numération
Les bases couramment utilisées en informatique sont identifiées par des préfixes spécifiques :
- Décimal : aucun préfixe (ex:
123). - Octal : préfixe
0(ex:0123). - Hexadécimal : préfixe
0x(ex:0x1A).
Méthodes de conversion :
- Décimal vers une autre base : divisions successives par la base cible, les restes lus en ordre inverse forment le résultat.
- Autre base vers décimal : somme pondérée des chiffres multipliés par la base élevée à la puissance de leur position.
- Binaire et Hexadécimal : 1 chiffre hexadécimal équivaut exactement à 4 bits (ex:
0xA=1010). - Binaire et Octal : 1 chiffre octal équivaut exactement à 3 bits (ex:
07=111).
Boutisme et représentation des entiers
Petit-boutiste (Little-endian) : l'octet de poids faible d'une donnée multioctet est stocké à l'adresse mémoire la plus basse.
Exemple pour la valeur hexadécimale 0xABCDEF00 :
Adresse basse vers adresse haute : 00 EF CD AB.
Codage des entiers relatifs :
- Bit de signe : le bit de poids fort indique le signe (0 pour positif, 1 pour négatif).
- Code signé (Valeur absolue et signe) : le bit de signe suivi de la valeur binaire. Pour
0x4A(74) :00000000 00000000 00000000 01001010. - Complément à 1 : inversion de tous les bits de la valeur absolue. Pour
-0x4A:11111111 11111111 11111111 10110101. - Complément à 2 : complément à 1 + 1. C'est le format réellement utilisé par le processeur. Pour
-0x4A:11111111 11111111 11111111 10110110(soit0xFFFFFFB6).
Représentation des nombres à virgule flottante (IEEE 754)
Le format simple précision (float) utilise 32 bits répartis ainsi : 1 bit de signe, 8 bits d'exposant décalé, et 23 bits de mantisse.
Analyse de la valeur -5.5 :
- Signe : 1 (négatif).
- Binaire :
101.1. En notation scientifique :1.011 × 2^2. - Exposant :
2 + 127 (biais) = 129, soit10000001en binaire. - Mantisse : on omet le "1" implicite, il reste
011, complété par des zéros jusqu'à 23 bits. - Stockage final :
1 10000001 01100000000000000000000, ce qui donne0xC0B00000en hexadécimal.
Analyse de la valeur -20.25 :
- Signe : 1.
- Binaire :
10100.01→1.010001 × 2^4. - Exposant :
4 + 127 = 131, soit10000011. - Stockage final :
1 10000011 01000100000000000000000, correspondant à0xC1A20000.
Types de données caractères
Les types caractères occupent exactement 1 octet (8 bits) en mémoire.
signed char: interprété avec un bit de signe, permettant de représenter des valeurs de -128 à 127.unsigned char: tous les bits sont utilisés pour la magnitude, offrant une plage de 0 à 255. Ce type est très fréquemment employé pour manipuler des données brutes ou des codes ASCII étendus.
La correspondance entre ces valeurs numériques et les symboles textuels est régie par la table standard ASCII.