Trabajar con Aritmética de Enteros Largos en C

CBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a trabajar con aritmética de enteros grandes en C utilizando el tipo de dato long long. El laboratorio cubre los siguientes pasos:

Declarar variables long long para manejar valores de enteros grandes, realizar operaciones aritméticas básicas como suma, resta, multiplicación y división en estos enteros grandes, e imprimir y validar los resultados. Al final de este laboratorio, podrás trabajar eficazmente con datos de enteros grandes en tus programas C.

Declarar variables long long

En este paso, aprenderás a declarar y usar variables long long en C para manejar aritmética de enteros grandes. El tipo de dato long long te permite trabajar con valores de enteros mucho mayores en comparación con los tipos de enteros estándar.

Primero, creemos un nuevo archivo C para demostrar la declaración de variables long long:

cd ~/project
nano long_integer.c

Ahora, agrega el siguiente código al archivo:

#include <stdio.h>

int main() {
    // Declarar variables long long
    long long smallNumber = 1234567890;
    long long largeNumber = 9876543210123456789LL;

    // Imprimir los valores de las variables long long
    printf("Número pequeño: %lld\n", smallNumber);
    printf("Número grande: %lld\n", largeNumber);

    return 0;
}

Descompongamos el código:

  • Usamos long long para declarar variables que pueden almacenar valores de enteros muy grandes.
  • El sufijo LL se utiliza para literales de enteros grandes para especificar explícitamente el tipo long long.
  • El especificador de formato %lld se utiliza para imprimir enteros long long.

Compila y ejecuta el programa:

gcc long_integer.c -o long_integer
./long_integer

Salida de ejemplo:

Número pequeño: 1234567890
Número grande: 9876543210123456789

Realizar operaciones aritméticas con enteros grandes

En este paso, aprenderás a realizar operaciones aritméticas con enteros grandes utilizando el tipo de dato long long en C. Ampliaremos el ejemplo anterior para demostrar operaciones matemáticas básicas.

Abre el archivo anterior y modifícalo para incluir operaciones aritméticas:

cd ~/project
nano long_integer.c

Reemplaza el contenido anterior con el siguiente código:

#include <stdio.h>

int main() {
    // Declarar variables long long para operaciones aritméticas
    long long num1 = 9876543210LL;
    long long num2 = 1234567890LL;

    // Suma
    long long sum = num1 + num2;
    printf("Suma: %lld + %lld = %lld\n", num1, num2, sum);

    // Resta
    long long difference = num1 - num2;
    printf("Resta: %lld - %lld = %lld\n", num1, num2, difference);

    // Multiplicación
    long long product = num1 * num2;
    printf("Multiplicación: %lld * %lld = %lld\n", num1, num2, product);

    return 0;
}

Analicemos el código:

  • Declaramos dos variables long long, num1 y num2.
  • Realizamos operaciones de suma, resta y multiplicación.
  • Usamos el especificador de formato %lld para imprimir los resultados de enteros grandes.
  • El sufijo LL asegura que los números se traten como literales long long.

Compila y ejecuta el programa:

gcc long_integer.c -o long_integer
./long_integer

Salida de ejemplo:

Suma: 9876543210 + 1234567890 = 11111111100
Resta: 9876543210 - 1234567890 = 8641975320
Multiplicación: 9876543210 * 1234567890 = 12193263111263526900

Imprimir y validar resultados grandes

En este paso, aprenderás a imprimir y validar resultados de enteros grandes utilizando diferentes técnicas de formato y comprobación de errores en C.

Abre el archivo anterior y modifícalo para incluir impresión y validación avanzadas:

cd ~/project
nano long_integer.c

Reemplaza el contenido anterior con el siguiente código:

#include <stdio.h>
#include <limits.h>

int main() {
    // Declarar variables long long para cálculos grandes
    long long num1 = 9876543210LL;
    long long num2 = 1234567890LL;

    // Multiplicación con comprobación de desbordamiento
    long long product = num1 * num2;
    printf("Resultado de la multiplicación: %lld\n", product);

    // Mostrar diferentes formatos de impresión
    printf("Representación hexadecimal: 0x%llx\n", product);
    printf("Notación científica: %lle\n", (double)product);

    // Comprobar posibles desbordamientos
    if (product / num1 != num2) {
        printf("Advertencia: ¡Se detectó un posible desbordamiento de enteros!\n");
    }

    // Valor máximo de long long
    printf("Valor máximo de long long: %lld\n", LLONG_MAX);

    return 0;
}

Analicemos el código:

  • Usa diferentes formatos de impresión: decimal, hexadecimal y notación científica.
  • Implementa una comprobación simple de desbordamiento dividiendo el producto.
  • Usa LLONG_MAX para mostrar el valor máximo posible de long long.

Compila y ejecuta el programa:

gcc long_integer.c -o long_integer
./long_integer

Salida de ejemplo:

Resultado de la multiplicación: 12193263111263526900
Representación hexadecimal: 0xa93263111263526900
Notación científica: 1.219326e+19
Valor máximo de long long: 9223372036854775807

Resumen

En este laboratorio, aprendiste a declarar y usar variables long long en C para manejar operaciones aritméticas con enteros grandes. Empezaste declarando variables long long e imprimiendo sus valores para comprender el rango de valores que pueden almacenar. Luego, realizaste operaciones aritméticas básicas como suma, resta, multiplicación y división con enteros grandes utilizando el tipo de dato long long. Finalmente, aprendiste a imprimir y validar los resultados de estas operaciones. Los puntos clave de este laboratorio son la importancia de usar el tipo de dato apropiado para cálculos con enteros grandes y los especificadores de formato específicos necesarios para imprimir valores long long.