Programa C a número decimal a octal

Programa C a número decimal a octal

En este ejemplo, aprenderá a convertir un número decimal a octal. Aquí escribimos un programa que toma un número decimal como entrada y lo convierte en un número octal equivalente. Convertir un número decimal a octal significa convertir el número con valor base 10 al valor base 8.

El valor base de un sistema numérico determina el número de dígitos utilizados para representar un valor numérico. Por ejemplo, el sistema numérico binario usa dos dígitos 0 y 1, el sistema numérico octal usa 8 dígitos del 0 al 7 y el sistema numérico decimal usa 10 dígitos del 0 al 9 para representar cualquier valor numérico.

Ejemplos:

Decimal number Input: 10
Octal number Output:  12


Decimal number Input: 9
Octal number Output:  11

Lógica para convertir números decimales a octales:

1. Pídale al usuario que ingrese el número decimal.

2. Ahora realice una división de módulo en el número por 8 y almacene el resto en una matriz.

//Modulo division decimal number by 8

octalNum[i] = num % 8;

3. Ahora divide el número entre 8.

//Divide the decimal number by 8

num = num / 2; 

4. Repita los pasos 2 y 3 hasta que el número sea mayor que cero.

5. En el último imprimiremos la matriz en orden inverso.

Ejemplo 1:programa para convertir decimal a octal 

#include <stdio.h>

#define CHAR_SIZE   8
#define ARRAY_SIZE sizeof(int)* CHAR_SIZE

int main()
{
    int i = 0,j =0;
    //num for decimal number
    long long num = 0;

    //Array to store octal number
    int octalNum[ARRAY_SIZE];

    printf("Enter decimal number: ");
    scanf("%lld", &num);
    while (num > 0)
    {
        octalNum[i] = (num % 8);
        num = (num / 8);
        i++;
    }

    // printing octal array in reverse order
    for (j = i - 1; j >= 0; j--)
    {
        printf("%d",octalNum[j]);
    }

    return 0;
}

Salida:

Introduzca un número decimal:10
12

Análisis de código,

Supongamos que número es 10.

Paso 1: El resto, cuando 10 se divide por 8, es 2. Por lo tanto, octalNum[0] =2.
Paso 2: Divide 10 entre 8. El nuevo número es 10/8=1.
Paso 3: El resto, cuando 1 se divide por 8, es 1. Por lo tanto, binaryNum[1] =1.
Paso 4: Divide 1 entre 8. El nuevo número es 1/8 =0.
Paso 5: Dado que el número se convierte en =0, imprima la matriz octal en orden inverso. Por lo tanto, el número binario equivalente es 12.

Segunda forma de convertir decimal a octal sin matriz:

También podemos convertir números decimales a octales sin usar una matriz. Así que veamos el enfoque,

1. Inicialice las variables octalNum a 0 y countVal a 1.

2. Pídale al usuario que ingrese el número decimal.

3. Encuentra el resto cuando el número decimal se divide por 8.

//find the remainder of the entered decimal number

remainder = num % 8;

4. Actualice el número octal por octalNum + (resto * countVal)

// storing the octalvalue


octalNum  = (octalNum + (remainder * countVal ));

5. Incrementar countVal por countVal *10.

//storing exponential value
        
countVal = countVal * 10;

6. Divide el número decimal entre 8.

//Divide the num by 8

num = num/8;

7. Repita desde el segundo paso hasta que el número decimal sea cero.

Vea el siguiente código para convertir un número decimal a un número octal en C sin usar la matriz.

#include <stdio.h>

//typedef to avoid long name
typedef unsigned long long ULLINT;

// function to calculate the octal value of the given
// decimal number
ULLINT decimaltoOctal(ULLINT num)
{
    ULLINT octalNum = 0, countval = 1;
    int remainder = 0;

    while (num != 0)
    {
        // decimals remainder is calculated
        remainder = num % 8;

        // storing the octal value
        octalNum += remainder * countval;

        // storing exponential value
        countval = countval * 10;
        num /= 8;
    }
    return octalNum;
}


int main()
{
    //store decimal number
    ULLINT num = 0;

    //store octal number
    ULLINT octalNum = 0;

    printf("Enter decimal number: ");
    scanf("%lld", &num);

    //Function Call
    octalNum = decimaltoOctal(num);

    printf("%lld",octalNum);

    return 0;
}

Salida:

Introduzca un número decimal:74
112

Tercera vía usando la función de biblioteca matemática:

También podemos convertir decimal a octal usando la función de biblioteca pow declarada en el archivo de encabezado math.h. Veamos el código.
#include <stdio.h>
//typedef to avoid long name
typedef unsigned long long ULLINT;

// Function to return the octal
// equivalent of decimal value num
ULLINT decimalToOctal(ULLINT num)
{
    // To store the octal number
    ULLINT binNum = 0;
    int cnt = 0;
    while (num != 0)
    {
        int rem = num % 8;
        ULLINT c = pow(10, cnt);
        binNum += rem * c;
        num /= 8;
        // Count used to store exponent value
        cnt++;
    }
    return binNum;
}
int main()
{
    //num for decimal number
    ULLINT num;
    printf("Enter decimal number: ");
    scanf("%lld", &num);

    //Called function
    printf("%lld",decimalToOctal(num));

    return 0;
}

Salida:

Introduzca un número decimal:74
112

Publicaciones recomendadas para ti

  • Programa en C a número decimal a binario usando recursividad.
  • Diseño de memoria del programa C.
  • Enlace interno, externo y ninguno.
  • typedef frente a #define en C.
  • Macro en C, con código de ejemplo.
  • enum en C, deberías saberlo.
  • 5 formas de invertir bits de un entero.
  • El mejor mouse para programar y codificar.