Escriba un programa en C para ingresar el número hexadecimal del usuario y convertirlo al sistema numérico octal. Cómo convertir el sistema numérico hexadecimal al sistema numérico octal en programación C. Lógica para convertir sistema numérico hexadecimal a octal en programación C.
Ejemplo
Entrada
Input hexadecimal: 1A
Salida
Octal number: 32
Conocimientos requeridos
Programación básica en C, caso de cambio, bucle For, bucle While, matriz
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 octal
Sistema de numeración octal es un sistema numérico de base 8. Utiliza 8 símbolos para representar todos los números, es decir, 01234567
Lógica para convertir hexadecimal a octal
No existe ningún algoritmo de conversión fácil y directo del sistema numérico hexadecimal al octal. A continuación se muestra la lógica descriptiva paso a paso para convertir un sistema numérico hexadecimal a decimal.
- Convierta el número hexadecimal dado a binario.
- Agrupe el binario convertido en grupos de 3 bits.
- Escriba el valor octal correspondiente de para cada dígito de número binario agrupado.
Tabla de conversión de binario a octal
Decimal | Binario | Octubre |
---|---|---|
0 | 000 | 0 |
1 | 001 | 1 |
2 | 010 | 2 |
3 | 011 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
Programa para convertir sistema numérico hexadecimal a octal
/**
* C program to convert Hexadecimal to Octal number system
*/
#include <stdio.h>
int main()
{
char hex[17];
long long octal, bin, place;
int i = 0, rem, val;
/* Input hexadecimal number from user */
printf("Enter any hexadecimal number: ");
gets(hex);
octal = 0ll;
bin = 0ll;
place = 0ll;
/* Hexadecimal to binary conversion */
for(i=0; hex[i]!='\0'; i++)
{
bin = bin * place;
switch(hex[i])
{
case '0':
bin += 0;
break;
case '1':
bin += 1;
break;
case '2':
bin += 10;
break;
case '3':
bin += 11;
break;
case '4':
bin += 100;
break;
case '5':
bin += 101;
break;
case '6':
bin += 110;
break;
case '7':
bin += 111;
break;
case '8':
bin += 1000;
break;
case '9':
bin += 1001;
break;
case 'a':
case 'A':
bin += 1010;
break;
case 'b':
case 'B':
bin += 1011;
break;
case 'c':
case 'C':
bin += 1100;
break;
case 'd':
case 'D':
bin += 1101;
break;
case 'e':
case 'E':
bin += 1110;
break;
case 'f':
case 'F':
bin += 1111;
break;
default:
printf("Invalid hexadecimal input.");
}
place = 10000;
}
place = 1;
/* Binary to octal conversion */
while(bin > 0)
{
rem = bin % 1000;
switch(rem)
{
case 0:
val = 0;
break;
case 1:
val = 1;
break;
case 10:
val = 2;
break;
case 11:
val = 3;
break;
case 100:
val = 4;
break;
case 101:
val = 5;
break;
case 110:
val = 6;
break;
case 111:
val = 7;
break;
}
octal = (val * place) + octal;
bin /= 1000;
place *= 10;
}
printf("Hexadecimal number = %s\n", hex);
printf("Octal number = %lld", octal);
return 0;
}
Salida
Enter any hexadecimal number: fff Hexadecimal number = fff Octal number = 7777