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;
}

コードを詳しく見てみましょう。

  • 10 進数、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値を出力するために必要な具体的なフォーマット指定子の重要性です。