CodeGym /Blog Java /Ngẫu nhiên /Lớp BigInteger Java

Lớp BigInteger Java

Xuất bản trong nhóm

Lớp BigInteger là gì?

Có một số kiểu dữ liệu nguyên thủy trong Java được sử dụng, chẳng hạn như int hoặc long, để thực hiện các phép toán số nguyên. Tuy nhiên, đôi khi chúng ta cần lưu trữ số lượng lớn bên ngoài phạm vi của các kiểu dữ liệu nguyên thủy như vậy. Lớp BigInteger được sử dụng để tính toán cho các số rất lớn. Nó cung cấp tất cả các phương thức từ gói java.lang.Math và tương tự với tất cả các toán tử số nguyên nguyên thủy của Java. Số nguyên lớnLớp bao gồm các hoạt động cho số học mô-đun, thao tác bit, tính toán GCD và một số hoạt động khác. BigIntegers được thể hiện trong ký hiệu bổ sung hai. Không có giới hạn lý thuyết về số lượng có thể được lưu trữ vì bộ nhớ được cấp phát động. Tuy nhiên, thực tế bộ nhớ có hạn và chúng ta có thể lưu trữ một số nguyên có số bit nhỏ hơn hoặc bằng Integer.MAX_VALUE . Điều này cung cấp một giới hạn trên đủ lớn để lưu trữ thực tế gần như tất cả các số lớn.

Lớp BigInteger được triển khai như thế nào?


import java.math.BigInteger;
Để triển khai lớp BigInteger trong mã của bạn, bạn cần nhập gói java.math.BigInteger .

Khai báo lớp BigInteger

Lớp BigInteger trong Java được khai báo theo cách sau trong gói java.math :

public class BigInteger
   extends Number
      implements Comparable<BigInteger>
Lớp BigInteger mở rộng lớp Số và triển khai giao diện So sánh được . Nó được khai báo và định nghĩa trong gói java.math .

Trình xây dựng lớp

Lớp BigInteger của Java có nhiều hàm tạo bị quá tải. Bạn có thể thử và chạy từng cái trong trình chỉnh sửa để xem chúng hoạt động như thế nào.
Sr# Người xây dựng Sự miêu tả
1 BigInteger(byte[] val) Dịch một mảng byte thành BigInteger .
2 BigInteger(int signum, byte[] độ lớn) Dịch biểu diễn cường độ ký thành BigInteger .
3 BigInteger(int bitLength, int chắc chắn, Random rnd) Xây dựng một BigInteger dương được tạo ngẫu nhiên có độ dài đã chỉ định.
4 BigInteger(Chuỗi val) Dịch biểu diễn chuỗi thập phân thành BigInteger .
5 BigInteger(Chuỗi val, int radix) Chuyển đổi biểu diễn Chuỗi trong cơ số đã chỉ định thành BigInteger .

phương pháp lớp

Lớp BigInteger của Java có nhiều phương thức, một số phương thức được mô tả bên dưới. Trong bảng, 'this' đại diện cho BigInteger gọi phương thức và ' val ' là đối số được truyền cho phương thức.
cơ bụng() Nó trả về giá trị tuyệt đối của ' this ' BigInteger .
thêm vào() Nó trả về một Biginteger bằng cách tính ' this + val '.
trừ () Nó trả về một Biginteger bằng cách tính ' this - val '.
chia() Nó trả về một Biginteger bằng cách tính “ this/val ”.
nhân() Nó trả về một Biginteger bằng cách tính ' this * val '.
giá trị của() Nó trả về một giá trị BigInteger của long đã cho .
bằng() Nó so sánh sự bằng nhau giữa ' this ' BigInteger và một đối tượng nhất định.
bột () Nó trả về một Biginteger bằng cách tính toán ' thisexponent '.
phút() Nó trả về giá trị nhỏ nhất giữa ' this ' BigInteger và giá trị đã cho.
tối đa() Nó trả về giá trị lớn nhất giữa ' this ' BigInteger và giá trị đã cho.
mod() Nó trả về một giá trị cho ' this mod m '.
gcd() Nó trả về một BigInteger là ước số chung lớn nhất giữa giá trị tuyệt đối của ' this ' và ' giá trị đã truyền '.
bitCount() Nó trả về số bit trong biểu diễn phần bù hai của ' this ' BigInteger .
bitLength() Nó trả về số bit, không bao gồm bit dấu, trong biểu diễn phần bù hai tối thiểu của ' this ' BigInteger .
Và() Nó trả về một Biginteger bằng cách tính ' this & val '.
hoặc() Nó trả về một Biginteger bằng cách tính toán ' this | giá trị '.
không() Nó trả về một Biginteger bằng cách tính ' ~this'.
và không() Nó trả về một Biginteger bằng cách tính toán ' this & ~val '.
intValue() Nó chuyển đổi BigInteger thành int .
floatValue() Nó chuyển đổi BigInteger thành float .
longValue() Nó chuyển đổi BigInteger thành long .
doubleValue() Nó chuyển đổi BigInteger thành gấp đôi .
toString() Nó trả về biểu diễn chuỗi thập phân của BigInteger .

ví dụ 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));
    }
}

đầu ra

15511210043330985984000000

Giải trình

Trong đoạn mã trên, hệ số của một số lớn được tính bằng Lớp BigInteger bằng cách nhập gói java.math.BigInteger . Chúng tôi đã tạo một phương thức tính toán . Phương thức này tạo một BigInteger và sau đó tính giai thừa bằng cách sử dụng phương thức nhân f.multiply(BigInteger.valueOf(i)) .

ví dụ 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);
    }
}

đầu ra

60 - 20 = 40 60 + 20 = 80 60 * 20 = 1200 60/20 = 3 giá trị tối thiểu: 20 giá trị tối đa: 60

Giải trình

Trong đoạn mã trên, chúng tôi đã tạo hai BigInteger bằng cách sử dụng hàm tạo BigInteger(String val) . Chúng tôi đã áp dụng các phương pháp khác nhau trên big1big2 của BigInteger với các giá trị lần lượt là 20 và 60. Chúng tôi đã áp dụng các phương pháp sau:
  1. big2.subtract(big1) để trừ 20 từ 60.
  2. big1.add(big2) để cộng 20 và 60.
  3. big1.multiply(big2) để nhân 20 và 60.
  4. big2.divide(big1) để chia 60 cho 20.
  5. big1.min(big2) để lấy giá trị nhỏ hơn trong hai giá trị.
  6. big1.max(big2) để nhận giá trị lớn hơn trong hai giá trị.
Điều quan trọng cần lưu ý là java.math.BigInteger được nhập ở đầu mã.

Phần kết luận

Bây giờ bạn đã quen thuộc với Lớp BigInteger trong Java. Bạn sẽ có thể sử dụng BigInteger s trong mã của mình bằng cách sử dụng các loại hàm tạo khác nhau. Bạn cũng có thể thực hiện các phép toán số học và logic khác nhau trên chúng bằng cách sử dụng các phương thức Lớp BigInteger . Để thử thách, bạn có thể thử gọi các phương thức khác nhau với các giá trị khác nhau của BigInteger s. Nó sẽ củng cố thêm hiểu biết của bạn về BigInteger s trong Java. Để tự tin hơn trong việc học của bạn, hãy thử thực hành nó nhiều lần. Chìa khóa để mã hóa tốt là thực hành. Chúc may mắn và viết mã vui vẻ!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION