Pourquoi utilisons-nous + 55 pour convertir décimal en hexadécimal? dans ce code, nous utilisons +48 pour convertir un entier en caractère. quand temp <10. Mais lorsque temp> = 10, nous utilisons +55. qu'est-ce que cela signifie par +55?
#include<stdio.h>
int main(){
long int decimalNumber,remainder,quotient;
int i=1,j,temp;
char hexadecimalNumber[100];
printf("Enter any decimal number: ");
scanf("%ld",&decimalNumber);
quotient = decimalNumber;
while(quotient!=0){
temp = quotient % 16;
//To convert integer into character
if( temp < 10)
temp =temp + 48;
else
temp = temp + 55;
hexadecimalNumber[i++]= temp;
quotient = quotient / 16;
}
printf("Equivalent hexadecimal value of decimal number %d: ",decimalNumber);
for(j = i -1 ;j> 0;j--)
printf("%c",hexadecimalNumber[j]);
return 0;
}
Dans un environnement ASCII, 55 est égal à 'A' - 10
. Cela signifie que l'ajout de 55 équivaut à soustraire 10 et à ajouter 'A'
.
En ASCII, les valeurs de 'A'
à 'Z'
sont adjacentes et séquentielles, de sorte que cela mappera 10 à 'A'
, 11 à 'B'
et ainsi de suite.
Pour les valeurs de temp
inférieures à 10, le code ASCII approprié est 48 + temp
:
0 => 48 + 0 => '0'
1 => 48 + 1 => '1'
2 => 48 + 2 => '2'
3 => 48 + 3 => '3'
4 => 48 + 4 => '4'
5 => 48 + 5 => '5'
6 => 48 + 6 => '6'
7 => 48 + 7 => '7'
8 => 48 + 8 => '8'
9 => 48 + 9 => '9'
Pour les valeurs supérieures ou égales à 10, la lettre appropriée est 55 + temp
:
10 => 55 + 10 => 'A'
11 => 55 + 11 => 'B'
12 => 55 + 12 => 'C'
13 => 55 + 13 => 'D'
14 => 55 + 14 => 'E'
15 => 55 + 15 => 'F'
En raison du codage ASCII des caractères en C. Lorsque le reste (temp
) est inférieur à dix, le chiffre de l'hexadécimal est également compris entre 0 et 9. Les caractères "0" à "9 sont dans la plage ASCII de 48 à 57.
Lorsque le reste est supérieur à 10 (et toujours inférieur à 15, en raison de l'opération restante %
), le chiffre hexadécimal est dans la plage de A à F, ce qui, dans ASCII, est dans la plage de 65 à 70. Donc, temp + 55
est un nombre compris entre 65 et 70 et donne donc un caractère compris entre «A» et «F».
Il est plus courant d'utiliser une chaîne char[] digits = "0123456789ABCDEF";
et d'utiliser le reste en tant qu'index dans cette chaîne. La méthode dans votre question (probablement) fonctionne aussi bien.
Un nombre hexadécimal est un nombre représenté par 16 symboles, chiffres 0 à 9 et alphabets A - F. La procédure à suivre pour écrire un programme c afin de convertir un nombre décimal en hexadécimal est la suivante: Divisez le nombre décimal par 16 à chaque étape et prenez le reste.
Ici, pour les restes, on utilise 0 à 9 chiffres et on utilise ensuite les alphabets A, B, C, D, E, F pour représenter 10 à 15 chiffres. Maintenant, combinez tous les restes en série de bas en haut, c'est-à-dire A C'est le nombre hexadécimal de 10 (décimal)
par exemple, convertir le nombre décimal 10 en hexadécimal
16 | 10 | 0 - un
Maintenant, combinez tous les restes en série de bas en haut, c'est-à-dire A. C'est le nombre hexadécimal de 10 (décimal)
Logique du programme: Entrez le nombre décimal n, divisez n par 16 (depuis l'hexadécimal) et enregistrez le reste dans le tableau et le quotient dans une répétition n jusqu'à ce que n soit supérieur à zéro.
voir le programme à l'adresse suivante: http://www.programmingsimplysolved.com/c-programs/c-program-to-convert-decimal-number-to-hexadecimal-using-functions/
contribué par: www.programmingsimplysolved.com