CodeGym /وبلاگ جاوا /Random-FA /کلاس جاوا BigInteger
John Squirrels
مرحله
San Francisco

کلاس جاوا BigInteger

در گروه منتشر شد

کلاس BigInteger چیست؟

برخی از انواع داده های اولیه در جاوا وجود دارد که از جمله int یا long برای انجام عملیات عدد صحیح استفاده می شود. با این حال، گاهی اوقات ما نیاز داریم که اعداد زیادی را خارج از محدوده چنین انواع داده های اولیه ذخیره کنیم. کلاس BigInteger برای محاسبات ریاضی برای اعداد بسیار بزرگ استفاده می شود. این همه متدها را از بسته java.lang.Math و آنالوگ ها به همه عملگرهای عدد صحیح اولیه جاوا ارائه می کند. کلاس BigInteger عملیات برای محاسبات مدولار، دستکاری بیت، محاسبه GCD و چند عملیات دیگر را پوشش می دهد. BigInteger ها در نماد دو مکمل نمایش داده می شوند. هیچ محدودیت نظری در مورد اینکه یک عدد چقدر می تواند ذخیره شود وجود ندارد زیرا حافظه به صورت پویا تخصیص داده می شود. با این حال، عملاً حافظه محدود است و می‌توانیم یک عدد صحیح ذخیره کنیم که تعداد بیت‌های آن کمتر یا مساوی با عدد صحیح باشد . MAX_VALUE . این یک کران بالایی به اندازه کافی بزرگ برای ذخیره تقریباً تمام اعداد بزرگ فراهم می کند.

کلاس BigInteger چگونه پیاده سازی می شود؟

import java.math.BigInteger;
برای پیاده سازی کلاس BigInteger در کد خود، باید بسته java.math.BigInteger را وارد کنید .

اعلان کلاس BigInteger

کلاس BigInteger در جاوا به روش زیر در بسته java.math اعلان می شود :
public class BigInteger
   extends Number
      implements Comparable<BigInteger>
کلاس BigInteger کلاس Number را گسترش می دهد و یک رابط Comparable را پیاده سازی می کند . در بسته java.math اعلام و تعریف شده است .

سازندگان کلاس

کلاس BigInteger جاوا دارای بسیاری از سازنده های بارگذاری شده است. می توانید سعی کنید هر کدام را در ویرایشگر اجرا کنید تا ببینید چگونه کار می کنند.
Sr# سازنده شرح
1 BigInteger(byte[] val) یک آرایه بایت را به یک BigInteger ترجمه می کند .
2 BigInteger (int signum، بایت[] قدر) نمایش قدر علامت را به یک عدد بزرگ ترجمه می کند .
3 BigInteger (int bitLength، int قطعیت، تصادفی rnd) یک BigInteger مثبت با طول مشخص شده به طور تصادفی ایجاد می کند.
4 BigInteger (String Val) نمایش رشته اعشاری را به یک BigInteger ترجمه می کند .
5 BigInteger (string val، int radix) نمایش رشته در ریشه مشخص شده را به یک BigInteger تبدیل می کند .

روش های کلاس

کلاس BigInteger جاوا متدهای زیادی دارد که برخی از آنها در زیر توضیح داده شده است. در جدول، 'this' نشان دهنده BigInteger است که متد را فراخوانی می کند و ' val ' آرگومان ارسال شده به متد است.
abs() قدر مطلق " این " BigInteger را برمی گرداند .
اضافه کردن() با محاسبه ' this + val ' یک عدد Biginteger را برمی گرداند .
تفریق کردن() با محاسبه " this - val " یک عدد Biginteger را برمی گرداند .
تقسیم () با محاسبه " این / val " یک عدد بزرگ را برمی گرداند .
تکثیر کردن() با محاسبه " این * val " یک عدد Biginteger را برمی گرداند .
ارزش() یک مقدار BigInteger از long داده شده را برمی گرداند .
برابر () برابری بین " این " BigInteger و یک شی داده شده را مقایسه می کند.
قدرت () با محاسبه این نما یک عدد بزرگ را برمی گرداند .
دقیقه () حداقل بین " این " BigInteger و مقدار داده شده را برمی گرداند.
حداکثر () حداکثر بین " این " BigInteger و مقدار داده شده را برمی گرداند.
mod() مقداری را برای ' this mod m ' برمی گرداند.
gcd() یک BigInteger را برمی گرداند که بزرگترین مقسوم علیه مشترک بین قدر مطلق " این " و " مقدار پاس شده " است.
bitCount() تعداد بیت‌های موجود در نمایش مکمل دو « این » BigInteger را برمی‌گرداند .
bitLength() تعداد بیت‌ها را، به استثنای بیت علامت، در حداقل نمایش دو مکمل « این » BigInteger برمی‌گرداند .
و () با محاسبه " this & val " یک عدد Biginteger را برمی گرداند .
یا() با محاسبه ' this | یک عدد بزرگ را برمی گرداند val '.
نه () با محاسبه ' ~this' یک عدد Biginteger را برمی گرداند .
و نه() با محاسبه " this & ~val " یک عدد Biginteger را برمی گرداند .
intValue() BigInteger را به int تبدیل می کند .
floatValue() BigInteger را به float تبدیل می کند .
longValue() BigInteger را به long تبدیل می کند .
doubleValue() BigInteger را به دو برابر تبدیل می کند .
toString() نمایش رشته اعشاری BigInteger را برمی گرداند .

مثال 1

import java.math.BigInteger;
public class Example1 {
    static BigInteger calculateFactorial(int val) {
        // Initialize result
        BigInteger f = BigInteger.ONE; // Or new BigInteger("1")
        // compute factorial
        for (int i = 2; i <= val; i++) {
            f = f.multiply(BigInteger.valueOf(i));
        }

        return f;
    }

    // Driver method
    public static void main(String[] args) {
        int val = 25;
        System.out.println(calculateFactorial(val));
    }
}

خروجی

15511210043330985984000000

توضیح

در قطعه بالا، ضریب یک عدد بزرگ با استفاده از کلاس BigInteger با وارد کردن بسته java.math.BigInteger محاسبه می شود. ما یک متد محاسبه فاکتوریل ایجاد کرده ایم . این روش یک BigInteger ایجاد می کند و سپس فاکتوریل را با استفاده از روش ضرب f.multiply(BigInteger.valueOf(i)) محاسبه می کند .

مثال 2

import java.math.BigInteger;
public class Example2 {

    public static void main(String[] args) {
        BigInteger big1 = new BigInteger("20");
        BigInteger big2 = new BigInteger("60");
        BigInteger sub = big2.subtract(big1);
        System.out.println(big2 + " - " + big1 + " = " + sub);
        BigInteger add = big1.add(big2);
        System.out.println(big1 + " + " + big2 + " = " + add);
        BigInteger mul = big1.multiply(big2);
        System.out.println(big1 + " * " + big2 + " = " + mul);
        BigInteger div = big2.divide(big1);
        System.out.println(big2 + " / " + big1 + " = " + div);
        BigInteger min = big1.min(big2);
        System.out.println("min value: " + min);
        BigInteger max = big1.max(big2);
        System.out.println("max value: " + max);
    }
}

خروجی

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60 / 20 = 3 دقیقه مقدار: 20 مقدار حداکثر: 60

توضیح

در قطعه بالا، دو عدد BigInteger را با استفاده از سازنده BigInteger (String val) ساخته‌ایم . ما روش های مختلفی را روی BigInteger s big1 و big2 با مقادیر 20 و 60 به ترتیب اعمال کردیم. ما روش های زیر را اعمال کردیم:
  1. big2.subtract(big1) تا 20 از 60 کم شود.
  2. big1.add(big2) برای اضافه کردن 20 و 60.
  3. big1.multiply(big2) تا 20 و 60 ضرب شود.
  4. big2.divide(big1) برای تقسیم 60 بر 20.
  5. big1.min(big2) برای بدست آوردن کوچکتر از دو مقدار.
  6. big1.max(big2) برای بدست آوردن مقدار بزرگتر از دو مقدار.
توجه به این نکته مهم است که java.math.BigInteger در بالای کد وارد شده است.

نتیجه

تا به حال باید با کلاس BigInteger در جاوا آشنا باشید . شما باید بتوانید از BigIntegers در کد خود با استفاده از انواع مختلف سازنده استفاده کنید. همچنین باید بتوانید با استفاده از متدهای کلاس BigInteger ، عملیات حسابی و منطقی مختلفی را بر روی آنها انجام دهید . به عنوان یک چالش، می توانید روش های مختلف را با مقادیر مختلف BigInteger s فراخوانی کنید. درک شما از BigInteger در جاوا را بیشتر تقویت می کند . برای اطمینان بیشتر در یادگیری خود سعی کنید آن را بارها و بارها تمرین کنید. کلید کدنویسی خوب تمرین است. با آرزوی موفقیت و برنامه نویسی شاد!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION