La conversion des nombres hexadécimaux en binaire est une compétence essentielle en programmation, notamment en C. Cet article vise à fournir une explication détaillée de cette conversion, suivie d’exercices corrigés et de cas particuliers pour renforcer la compréhension.
Les nombres hexadécimaux (base 16) sont couramment utilisés en informatique en raison de leur efficacité pour représenter des nombres binaires (base 2). Chaque chiffre hexadécimal correspond exactement à quatre bits binaires.
Hexadécimal | Binaire |
---|---|
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
A | 1010 |
B | 1011 |
C | 1100 |
D | 1101 |
E | 1110 |
F | 1111 |
Pour convertir un nombre hexadécimal en binaire, il suffit de remplacer chaque chiffre hexadécimal par son équivalent binaire à 4 bits.
Exemple : Convertir 2F3
en binaire.
2
en binaire est 0010
F
en binaire est 1111
3
en binaire est 0011
Donc, 2F3
en hexadécimal est 0010 1111 0011
en binaire.
Voici un programme en C qui effectue la conversion d’un nombre hexadécimal en binaire.
#include <stdio.h>
#include <string.h>
void hexToBinary(char hex[]) {
int i = 0;
printf("Binaire: ");
while (hex[i]) {
switch (hex[i]) {
case '0': printf("0000"); break;
case '1': printf("0001"); break;
case '2': printf("0010"); break;
case '3': printf("0011"); break;
case '4': printf("0100"); break;
case '5': printf("0101"); break;
case '6': printf("0110"); break;
case '7': printf("0111"); break;
case '8': printf("1000"); break;
case '9': printf("1001"); break;
case 'A':
case 'a': printf("1010"); break;
case 'B':
case 'b': printf("1011"); break;
case 'C':
case 'c': printf("1100"); break;
case 'D':
case 'd': printf("1101"); break;
case 'E':
case 'e': printf("1110"); break;
case 'F':
case 'f': printf("1111"); break;
default: printf("\nCaractère hexadécimal invalide %c", hex[i]);
}
i++;
}
printf("\n");
}
int main() {
char hex[100];
printf("Entrer un nombre hexadécimal: ");
scanf("%s", hex);
hexToBinary(hex);
return 0;
}
Question: Convertir le nombre hexadécimal 1A3
en binaire.
Solution: 1A3
en hexadécimal est 0001 1010 0011
en binaire.
Question: Convertir le nombre hexadécimal B7F
en binaire.
Solution: B7F
en hexadécimal est 1011 0111 1111
en binaire.
Question: Convertir 05C
en binaire.
Solution: 05C
en hexadécimal est 0000 0101 1100
en binaire.
Question: Convertir a2B
en binaire.
Solution: a2B
en hexadécimal est 1010 0010 1011
en binaire.
La conversion hexadécimale en binaire est un processus direct une fois la table de correspondance maîtrisée. Le programme en langage C présenté permet de réaliser cette conversion de manière automatique. Les exercices et cas particuliers illustrent les différentes nuances de cette conversion.
Pour plus de lecture sur la conversion des systèmes de numération et la programmation en C, consultez les ressources suivantes :
Voici une série d’exercices avancés pour vous aider à maîtriser la conversion de nombres hexadécimaux en binaire en utilisant le langage de programmation C. Ces exercices comprennent des conversions directes, des manipulations de chaînes de caractères, et des cas particuliers qui vous permettront de consolider vos compétences.
Question : Écrire un programme en C qui convertit un long nombre hexadécimal en binaire et affiche le résultat. Par exemple, convertir 1A3F4C2B
en binaire.
Solution Attendue :
// Long hexadécimal : 1A3F4C2B
// Binaire attendu : 0001 1010 0011 1111 0100 1100 0010 1011
Question : Écrire un programme en C qui convertit un nombre hexadécimal en binaire. Le programme doit valider que l’entrée est bien un nombre hexadécimal valide (comprenant seulement les caractères 0-9, A-F, a-f) avant de faire la conversion.
Solution Attendue :
// Entrée : G45
// Sortie : Erreur, caractère invalide G
Question : Écrire un programme en C qui convertit un nombre hexadécimal en binaire et compte le nombre total de bits à 1 dans le résultat binaire.
Solution Attendue :
// Hexadécimal : 2F3
// Binaire : 0010 1111 0011
// Nombre de bits à 1 : 7
Question : Écrire un programme en C qui lit une série de nombres hexadécimaux séparés par des virgules, les convertit en binaire, et affiche chaque conversion.
Solution Attendue :
// Entrée : 1A3,4F2,B3
// Sortie :
// 1A3 -> 0001 1010 0011
// 4F2 -> 0100 1111 0010
// B3 -> 1011 0011
Question : Écrire un programme en C qui convertit un nombre hexadécimal en binaire et affiche le résultat sous forme d’un tableau de bits. Utilisez des *
pour représenter les bits à 1 et des .
pour les bits à 0.
Solution Attendue :
// Hexadécimal : 9F
// Binaire : 1001 1111
// Tableau :
// * . . .
// * * * *
// * . . .
Question : Écrire un programme en C qui convertit deux nombres hexadécimaux en binaire, effectue une opération ET logique bit à bit entre les deux résultats binaires, et affiche le résultat de cette opération en binaire.
Solution Attendue :
// Hexadécimal 1 : A3 (1010 0011)
// Hexadécimal 2 : 5F (0101 1111)
// Résultat AND : 0000 0011
Question : Écrire un programme en C qui convertit un nombre hexadécimal en binaire, puis reconvertit ce nombre binaire en hexadécimal pour vérifier l’exactitude de la conversion initiale.
Solution Attendue :
// Hexadécimal : 4C
// Binaire : 0100 1100
// Hexadécimal reconverti : 4C
// Vérification : Réussi
Question : Écrire un programme en C qui convertit un nombre hexadécimal en binaire, effectue un décalage logique vers la gauche de deux bits sur le résultat binaire, et affiche le nouveau résultat en binaire.
Solution Attendue :
// Hexadécimal : 3A (0011 1010)
// Binaire décalé : 1110 1000
Ces exercices avancés couvrent divers aspects de la conversion des nombres hexadécimaux en binaire en langage C, incluant la validation des entrées, les opérations bit à bit, et la vérification des conversions. En travaillant sur ces exercices, vous pourrez renforcer votre compréhension et votre maîtrise de ce concept clé en programmation.
La conversion de nombres hexadécimaux en binaire peut sembler directe, mais il existe des cas particuliers et des pièges courants qui peuvent compliquer la tâche. Voici une série de cas particuliers et de questions piège pour tester et renforcer votre compréhension.
Nombres Hexadécimaux avec des Zéros Initiaux
004F
en binaire.004F
en hexadécimal est 0000 0000 0100 1111
en binaire.Lettres Minuscules dans les Nombres Hexadécimaux
aBcD
en binaire.aBcD
en hexadécimal est 1010 1011 1100 1101
en binaire.Nombres Hexadécimaux Composés Uniquement de Lettres
ABCD
en binaire.ABCD
en hexadécimal est 1010 1011 1100 1101
en binaire.Nombres Hexadécimaux Très Longs
123456789ABCDEF
en binaire.123456789ABCDEF
en hexadécimal est 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
en binaire.Validation des Entrées Hexadécimales
G4H2
en binaire.G
et H
ne sont pas des caractères hexadécimaux valides.Combinaison de Zéros et de Lettres
00AB
en binaire.00AB
en hexadécimal est 0000 0000 1010 1011
en binaire.Nombres Hexadécimaux avec des Espaces
1 2 3
en binaire.Caractères Mixtes et Non-Hexadécimaux
12G3H4
en binaire.G
et H
.Conversion de Chaînes Vidées
Nombres Hexadécimaux avec des Caractères Spéciaux
1A#C
en binaire.#
ne sont pas valides.#
.Conversion de Nombres Négatifs (Invalide en Hexadécimal)
-2A3
en binaire.-
.Voici un programme en C qui prend en compte certains de ces cas particuliers et pièges.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void hexToBinary(char hex[]) {
int i = 0;
printf("Binaire: ");
while (hex[i]) {
if (!isxdigit(hex[i])) {
printf("\nErreur: Caractère hexadécimal invalide %c\n", hex[i]);
return;
}
switch (toupper(hex[i])) {
case '0': printf("0000 "); break;
case '1': printf("0001 "); break;
case '2': printf("0010 "); break;
case '3': printf("0011 "); break;
case '4': printf("0100 "); break;
case '5': printf("0101 "); break;
case '6': printf("0110 "); break;
case '7': printf("0111 "); break;
case '8': printf("1000 "); break;
case '9': printf("1001 "); break;
case 'A': printf("1010 "); break;
case 'B': printf("1011 "); break;
case 'C': printf("1100 "); break;
case 'D': printf("1101 "); break;
case 'E': printf("1110 "); break;
case 'F': printf("1111 "); break;
}
i++;
}
printf("\n");
}
int main() {
char hex[100];
printf("Entrer un nombre hexadécimal: ");
scanf("%s", hex);
hexToBinary(hex);
return 0;
}
Ce programme vérifie chaque caractère pour s’assurer qu’il est bien un caractère hexadécimal valide avant de procéder à la conversion. Il affiche un message d’erreur si un caractère invalide est détecté.
En pratiquant ces cas particuliers et en prenant en compte les pièges potentiels, vous serez mieux préparé à gérer les complexités de la conversion des nombres hexadécimaux en binaire en langage C.
1. Informations Générales Nom complet : Niccolò Machiavelli (en français : Nicolas Machiavel) Date de…
1. Informations Générales Nom complet : Albert Camus Date de naissance : 7 novembre 1913…
La méthode Thèse, Antithèse, Synthèse (TAS) est un outil incontournable pour structurer une dissertation, particulièrement…
1. Informations Générales Nom complet : Émile Édouard Charles Antoine Zola Date de naissance :…
1. Informations Générales Nom complet : Victor-Marie Hugo Date de naissance : 26 février 1802…
1. Informations Générales Nom complet : François Rabelais Date de naissance : Vers 1483 ou…
This website uses cookies.