CodeGym /จาวาบล็อก /สุ่ม /คลาส Java BigInteger
John Squirrels
ระดับ
San Francisco

คลาส Java BigInteger

เผยแพร่ในกลุ่ม

คลาส BigInteger คืออะไร

มีชนิดข้อมูลดั้งเดิม บางประเภท ใน Java ที่ใช้ เช่น int หรือ long เพื่อดำเนินการกับจำนวนเต็ม อย่างไรก็ตาม บางครั้งเราจำเป็นต้องจัดเก็บจำนวนมากนอกขอบเขตของประเภทข้อมูลดั้งเดิมดังกล่าว BigInteger Class ใช้สำหรับการคำนวณทางคณิตศาสตร์สำหรับตัวเลขจำนวนมาก มีเมธอดทั้งหมดจาก แพ็คเกจ java.lang.Mathและแอนะล็อกไปยังตัวดำเนินการจำนวนเต็มดั้งเดิมทั้งหมดของ Java จำนวนเต็มคลาสครอบคลุมการดำเนินการสำหรับเลขคณิตโมดูลาร์ การจัดการบิต การคำนวณ GCD และการดำเนินการอื่นๆ อีกเล็กน้อย BigIntegers จะแสดงในรูปแบบสองส่วนเติมเต็ม ไม่มีข้อจำกัดทางทฤษฎีเกี่ยวกับจำนวนที่สามารถจัดเก็บได้ เนื่องจากหน่วยความจำได้รับการจัดสรรแบบไดนามิก อย่างไรก็ตาม ในทางปฏิบัติหน่วยความจำมีจำกัด และเราสามารถเก็บจำนวนเต็มซึ่งมีจำนวนบิตน้อยกว่าหรือเท่ากับจำนวนเต็มได้MAX_VALUE ซึ่งให้ขอบเขตบนที่มากพอที่จะจัดเก็บตัวเลขจำนวนมากเกือบทั้งหมด

คลาส BigInteger ใช้งานอย่างไร


import java.math.BigInteger;
หากต้องการใช้ คลาส BigIntegerในโค้ดของคุณ คุณต้องนำเข้าแพ็คเกจ java.math.BigInteger

การประกาศคลาส BigInteger

คลาสBigIntegerใน Java ถูกประกาศด้วยวิธีต่อไปนี้ใน แพ็คเกจ java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
คลาส BigInteger ขยาย คลาส Numberและใช้ อินเท ร์เฟซที่เปรียบเทียบได้ มีการประกาศและกำหนดไว้ในแพ็คเกจ java.math

ตัวสร้างคลาส

BigInteger Class ของ Java มีตัวสร้างที่โอเวอร์โหลดจำนวนมาก คุณอาจลองเรียกใช้แต่ละรายการในโปรแกรมแก้ไขเพื่อดูว่าทำงานอย่างไร
ซีเนียร์# ตัวสร้าง คำอธิบาย
1 BigInteger(byte[] วาล) แปลอาร์เรย์ไบต์เป็นBigInteger
2 BigInteger(int signum, byte[] ขนาด) แปลการ แสดงขนาดของเครื่องหมายเป็นBigInteger
3 BigInteger(int bitLength, int แน่นอน, Random rnd) สร้าง BigIntegerบวกที่สร้างขึ้นแบบสุ่มตามความยาวที่ระบุ
4 BigInteger(ค่าสตริง) แปลการ แสดงสตริงทศนิยมเป็นBigInteger
5 BigInteger(สตริง val, int radix) แปลง การ แสดงสตริงในฐานที่ระบุเป็นBigInteger

วิธีการเรียน

คลาสBigIntegerของ Java มีหลายวิธี ซึ่งบางวิธีได้อธิบายไว้ด้านล่าง ในตาราง 'ค่านี้' แทนค่าBigIntegerที่เรียกใช้เมธอด และ ' val ' เป็นอาร์กิวเมนต์ที่ส่งไปยังเมธอด
เอบีเอส () คืนค่าสัมบูรณ์ของ ' this ' BigInteger
เพิ่ม() มันจะคืนค่าBigintegerโดยการคำนวณ ' this + val '
ลบ () มันจะคืนค่าBigintegerโดยการคำนวณ ' this - val '
แบ่ง() ส่งคืนค่าBigintegerโดยการคำนวณ ' this / val '
คูณ() ส่งคืนค่าBigintegerโดยการคำนวณ ' this * val '
มูลค่าของ() มันส่งคืน ค่า BigIntegerของlong ที่ กำหนด
เท่ากับ () มันเปรียบเทียบความเท่าเทียมกันระหว่าง ' สิ่งนี้ ' BigIntegerและวัตถุที่กำหนด
ธาร () มันจะคืนค่าจำนวนเต็มโดยการคำนวณ ' thisexponent '
นาที() ส่งคืนค่าต่ำสุดระหว่าง ' this ' BigIntegerและค่าที่กำหนด
สูงสุด () ส่งคืนค่าสูงสุดระหว่าง ' this ' BigIntegerและค่าที่กำหนด
สมัย () ส่งคืนค่าสำหรับ ' this mod m '
gcd() โดยจะส่งคืนBigIntegerที่เป็นตัวหารร่วมมากระหว่างค่าสัมบูรณ์ของ ' this ' และ ' pass value '
bitCount() ส่งกลับจำนวนบิตในการแทนสองส่วนเติมเต็มของ' this ' BigInteger
ความยาวบิต () ส่งคืนจำนวนบิต ไม่รวมบิตเครื่องหมาย ในการแทนค่าสองส่วนขั้นต่ำของ' this ' BigInteger
และ() ส่งคืนค่าBigintegerโดยการคำนวณ ' this & val '
หรือ() ส่งคืนค่าBigintegerโดยการคำนวณ ' this | วาล '.
ไม่() ส่งคืนค่าBiginteger โดยคำนวณ ' ~this'
และไม่() ส่งคืนค่าBigintegerโดยการคำนวณ ' this & ~val '
intValue() มันแปลงBigIntegerเป็นint
floatValue() มันแปลงBigIntegerเป็นfloat
ค่ายาว () มันแปลงBigIntegerเป็นlong
ค่าสองเท่า () มันแปลง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 Class โดยอิมพอร์ตแพ็คเกจ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) เราใช้วิธีการต่างๆ กับBig1และbig2ของBigIntegerที่มีค่า 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 Class ใน Java แล้ว คุณควรจะสามารถใช้BigIntegerในรหัสของคุณโดยใช้ตัวสร้างประเภทต่างๆ นอกจากนี้ คุณควรจะสามารถดำเนินการทางคณิตศาสตร์และตรรกะต่างๆ ได้โดยใช้ เมธอด BigInteger Class คุณสามารถลองเรียกใช้เมธอดต่างๆ ด้วยค่าต่างๆ ของBigIntegerได้ ตามความท้าทาย มันจะเสริมความเข้าใจของคุณเกี่ยวกับBigIntegerใน Java ให้ดียิ่งขึ้น เพื่อให้มั่นใจในการเรียนรู้ของคุณมากขึ้น ลองฝึกฝนซ้ำแล้วซ้ำอีก กุญแจสู่การเข้ารหัสที่ดีคือการฝึกฝน ขอให้โชคดีและมีความสุขในการเขียนโค้ด!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION