2024/04/24「多機能ファイラーAs/Rの魅力と活用法」を出版、KView32公開

C++Builderで、C#のBigIntegerを移植するには

C++Builder

C++Builderで扱える最大のバイト数は、System.UInt64で8バイトとなります。

C#(Visual Studio)では、BigIntegerという、可変長整数をサポートし、非常に大きな整数を扱うことができる数値型があります。

では、C++Builderで、BigInteger相当の大きな整数を扱うにはどうすればいいでしょうか?

C++Builderは、当然C++言語ですのでC++のライブラリが利用できます。調べてみると、Boostが128バイトまで扱える多倍長整数をサポートしていることが判りました。これを使用すれば、C#のBigIntegerの移植が可能です。

Boostライブラリィのインストール

最初、C++Builderには、Boostライブラリィが標準でインストールされていると思っていたのですが、
GetIt パッケージ マネージャを使用して組み込む必要がありました。

Boostライブラリィをインストールするには、メニューの「ツール」→「Gititパッケージマネージャ…」をクリックし、「Gititパッケージマネージャ」を開きます。

「Gititパッケージマネージャ」のインストール用のダイアログが表示されますので、”すべて”を選択し、検索BOXに”boost”を入力して検索するとBoostライブラリが表示されます。

Win32用とWin64用をインストールします。

以下のURLに、Boostライブラリのインストール方法及び使用方法の説明があります。

Boost - RAD Studio

Boostの多倍長整数のクラスの使用方法

基本的な使い方

boostjp : Boost日本語情報サイトに、Boost.Multiprecisionから提供される多倍長整数の、基本的な使い方の説明及びサンプルコードがあります。

  • サンプルコード

以下のサンプルは、任意精度の符号あり多倍長整数であるboost::multiprecision::cpp_intクラスを使用して、100の階乗を求めるプログラムです。

#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>

namespace mp = boost::multiprecision;

int main()
{
    mp::cpp_int x = 1;

    for (unsigned int i = 1; i <= 100; ++i)
       x *= i;

    std::cout << x << std::endl;
}

Boost日本語情報サイト

boostjp : Boost日本語情報サイトです。

多倍長整数 - boostjp
多倍長整数 多倍長整数を使用するには、Boost Multiprecision Libraryを使用する。 インデックス 基本的な使い方 多倍長整数の種類 文字列からの変換 文字列への変換 異なる大きさの整数間で型変換する 最小値を取得する...

参考URL

参考URLです。

タイトルとURLをコピーしました