Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Kelas Integer Besar dalam C?

Bagaimana untuk Mencipta Kelas Integer Besar dalam C?

Barbara Streisand
Barbara Streisandasal
2024-12-16 13:11:12974semak imbas

How to Create a Big Integer Class in C  ?

Cara Melaksanakan Big Int dalam C

Pengenalan

Bekerja dengan nombor yang lebih besar daripada jenis data terbina dalam long int memerlukan pelaksanaan tersuai yang dipanggil big int. Berikut ialah pendekatan umum untuk mereka bentuk kelas int besar dalam C .

Struktur Data

Simpan integer sebagai vektor nombor yang lebih kecil, biasanya digit tunggal atau nilai asas kecil . Ini membenarkan integer panjang sewenang-wenangnya.

template<class BaseType>
class BigInt {
    typedef typename BaseType BT;
protected:
    std::vector<BaseType> value_;
};

Operasi Aritmetik

Tambahan:

Laksanakan operator = menggunakan binari prinsip penambahan. Gelung melalui elemen, melakukan penambahan dan pengendalian membawa seperti yang diperlukan.

template<class BaseType>
BigInt<BaseType>& BigInt<BaseType>::operator+=(BigInt<BaseType> const& operand) {
    BT count, carry = 0;
    for (count = 0; count < std::max(value_.size(), operand.value_.size()); count++) {
        //... (carry handling omitted for brevity)
    }
    return *this;
}

Operasi Lain (Pendaraban, Pembahagian, dll.)

Operasi aritmetik lain memanfaatkan yang dilaksanakan = dan - pengendali. Pertimbangkan untuk menggunakan algoritma sedia ada untuk pelaksanaan yang dioptimumkan.

Pertimbangan Lain

  • Laksanakan pengendali perbandingan (<, >, dsb.) dengan membandingkan elemen individu.
  • Berkawan dengan operator input dan output standard untuk input dan input yang mudah output.
  • Pastikan bahawa BaseType yang mendasari ialah yang kedua terbesar tersedia (cth., 32-bit int pada sistem 64-bit) untuk dikendalikan dengan betul.
  • Atas ialah kandungan terperinci Bagaimana untuk Mencipta Kelas Integer Besar dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn