C 언어에서 큰 정수 연산 다루기

CBeginner
지금 연습하기

소개

이 실습에서는 C 언어에서 long long 데이터 형식을 사용하여 큰 정수 연산을 수행하는 방법을 배웁니다. 이 실습은 다음 단계를 포함합니다.

큰 정수 값을 처리하기 위해 long long 변수를 선언하고, 이러한 큰 정수에 대한 덧셈, 뺄셈, 곱셈 및 나눗셈과 같은 기본 연산을 수행하며, 결과를 출력하고 검증합니다. 이 실습을 마치면 C 프로그램에서 큰 정수 데이터를 효과적으로 사용할 수 있게 될 것입니다.

long long 변수 선언

이 단계에서는 C 에서 long long 변수를 선언하고 사용하여 큰 정수 연산을 처리하는 방법을 배웁니다. long long 데이터 형식은 표준 정수 형식에 비해 훨씬 큰 정수 값을 처리할 수 있습니다.

먼저 long long 변수 선언을 보여주는 새로운 C 파일을 생성해 봅시다.

cd ~/project
nano long_integer.c

이제 다음 코드를 파일에 추가합니다.

#include <stdio.h>

int main() {
    // long long 변수 선언
    long long smallNumber = 1234567890;
    long long largeNumber = 9876543210123456789LL;

    // long long 변수 값 출력
    printf("Small Number: %lld\n", smallNumber);
    printf("Large Number: %lld\n", largeNumber);

    return 0;
}

코드를 자세히 살펴보겠습니다.

  • long long을 사용하여 매우 큰 정수 값을 저장할 수 있는 변수를 선언합니다.
  • LL 접미사는 큰 정수 리터럴에 사용하여 명시적으로 long long 형식을 지정합니다.
  • %lld 형식 지정자는 long long 정수를 출력하는 데 사용됩니다.

프로그램을 컴파일하고 실행합니다.

gcc long_integer.c -o long_integer
./long_integer

예상 출력:

Small Number: 1234567890
Large Number: 9876543210123456789

큰 정수에 대한 연산 수행

이 단계에서는 C 에서 long long 데이터 형식을 사용하여 큰 정수에 대한 산술 연산을 수행하는 방법을 배웁니다. 이전 예제를 확장하여 기본적인 수학 연산을 보여줍니다.

이전 파일을 열고 산술 연산을 포함하도록 수정합니다.

cd ~/project
nano long_integer.c

이전 내용을 다음 코드로 바꿉니다.

#include <stdio.h>

int main() {
    // 산술 연산을 위한 long long 변수 선언
    long long num1 = 9876543210LL;
    long long num2 = 1234567890LL;

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

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

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

    return 0;
}

코드를 자세히 살펴보겠습니다.

  • 두 개의 long long 변수 num1num2를 선언합니다.
  • 덧셈, 뺄셈, 곱셈을 수행합니다.
  • %lld 형식 지정자를 사용하여 큰 정수 결과를 출력합니다.
  • LL 접미사는 숫자를 long long 리터럴로 처리하도록 합니다.

프로그램을 컴파일하고 실행합니다.

gcc long_integer.c -o long_integer
./long_integer

예상 출력:

덧셈: 9876543210 + 1234567890 = 11111111100
뺄셈: 9876543210 - 1234567890 = 8641975320
곱셈: 9876543210 * 1234567890 = 12193263111263526900

큰 결과 출력 및 유효성 검사

이 단계에서는 C 를 사용하여 서로 다른 형식 지정 기법과 오류 검사를 통해 큰 정수 결과를 출력하고 유효성을 검사하는 방법을 배웁니다.

이전 파일을 열고 고급 출력 및 유효성 검사를 포함하도록 수정합니다.

cd ~/project
nano long_integer.c

이전 내용을 다음 코드로 바꿉니다.

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

int main() {
    // 큰 계산을 위한 long long 변수 선언
    long long num1 = 9876543210LL;
    long long num2 = 1234567890LL;

    // 오버플로우 검사를 포함한 곱셈
    long long product = num1 * num2;
    printf("곱셈 결과: %lld\n", product);

    // 서로 다른 출력 형식 보여주기
    printf("16 진수 표현: 0x%llx\n", product);
    printf("지수 표기법: %lle\n", (double)product);

    // 잠재적 오버플로우 검사
    if (product / num1 != num2) {
        printf("경고: 잠재적 정수 오버플로우가 감지되었습니다!\n");
    }

    // long long 의 최대값
    printf("long long 최대값: %lld\n", LLONG_MAX);

    return 0;
}

코드를 자세히 살펴보겠습니다.

  • 십진수, 16 진수, 지수 표기법과 같은 서로 다른 출력 형식을 사용합니다.
  • 곱셈 결과를 나누어 간단한 오버플로우 검사를 구현합니다.
  • LLONG_MAX를 사용하여 가능한 최대 long long 값을 보여줍니다.

프로그램을 컴파일하고 실행합니다.

gcc long_integer.c -o long_integer
./long_integer

예상 출력:

곱셈 결과: 12193263111263526900
16 진수 표현: 0xa93263111263526900
지수 표기법: 1.219326e+19
long long 최대값: 9223372036854775807

요약

이 실험에서는 C 에서 long long 변수를 선언하고 사용하여 큰 정수 산술 연산을 처리하는 방법을 배웠습니다. long long 변수를 선언하고 그 값을 출력하여 저장할 수 있는 값의 범위를 이해하는 것으로 시작했습니다. 그런 다음 long long 데이터 형식을 사용하여 큰 정수에 대한 기본적인 산술 연산 (덧셈, 뺄셈, 곱셈, 나눗셈) 을 수행했습니다. 마지막으로 이러한 연산의 결과를 출력하고 유효성을 검사하는 방법을 배웠습니다. 이 실험에서 얻을 수 있는 주요 내용은 큰 정수 계산에 적절한 데이터 형식을 사용하는 것과 long long 값을 출력하는 데 필요한 특정 형식 지정자의 중요성입니다.