Escriba un programa en C para ingresar el número hexadecimal del usuario y convertirlo al sistema numérico decimal. Cómo convertir del sistema numérico hexadecimal al sistema numérico decimal en programación C. Lógica para convertir sistema numérico hexadecimal a decimal en programación C.
Ejemplo
Entrada
Input hexadecimal: 1A
Salida
Decimal number: 26
Conocimientos requeridos
Programación básica en C, If else, For loop, String
Sistema numérico hexadecimal
Sistema numérico hexadecimal es un sistema numérico de base 16. Utiliza 16 símbolos para representar todos los números, es decir, 0123456789ABCDEF
Sistema numérico decimal
Sistema numérico decimal es un sistema numérico de base 10. Utiliza 10 símbolos para representar todos los números, es decir, 0123456789
Lógica para convertir Hexadecimal a Decimal
Lógica descriptiva paso a paso para convertir sistema numérico hexadecimal a decimal.
- Ingrese un número hexadecimal del usuario. Guárdelo en alguna variable hex .
- Inicializar
decimal = 0
,digit = length_of_hexadecimal_digit - 1
yi = 0
. - Ejecute un bucle para cada dígito hexadecimal. ¿Cuál es la estructura del bucle que debería verse como
for(i=0; hex[i]!='\0'; i++)
? . - Dentro del bucle, encuentre el valor entero de hex[i] . Guárdelo en alguna variable, digamos val .
- Convertir el hexadecimal a decimal usando
decimal = decimal + (val * 16 ^ digit)
. Dondeval = hex[i]
.
Programa para convertir sistema numérico hexadecimal a decimal
/**
* C program to convert Hexadecimal to Decimal number system
*/
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{
char hex[17];
long long decimal, place;
int i = 0, val, len;
decimal = 0;
place = 1;
/* Input hexadecimal number from user */
printf("Enter any hexadecimal number: ");
gets(hex);
/* Find the length of total number of hex digit */
len = strlen(hex);
len--;
/*
* Iterate over each hex digit
*/
for(i=0; hex[i]!='\0'; i++)
{
/* Find the decimal representation of hex[i] */
if(hex[i]>='0' && hex[i]<='9')
{
val = hex[i] - 48;
}
else if(hex[i]>='a' && hex[i]<='f')
{
val = hex[i] - 97 + 10;
}
else if(hex[i]>='A' && hex[i]<='F')
{
val = hex[i] - 65 + 10;
}
decimal += val * pow(16, len);
len--;
}
printf("Hexadecimal number = %s\n", hex);
printf("Decimal number = %lld", decimal);
return 0;
}
Salida
Enter any hexadecimal number: 1a Hexadecimal number = 1a Decimal number = 26