Java BigInteger

Java Biginteger



Η Java προσφέρει μια ειδική κλάση BigInteger για τη διαχείριση εξαιρετικά μεγάλων αριθμών που είναι μεγαλύτεροι από αριθμούς 64 bit. Το μέγεθος των ακεραίων τιμών που μπορεί να χειριστεί αυτή η κλάση περιορίζεται απλώς από την εκχωρημένη μνήμη του JVM. Η κλάση BigInteger, η οποία κληρονομεί έναν αριθμό. υλοποιεί τη διεπαφή Comparable. Δίνει ισοδύναμα για κάθε πρωτόγονο ακέραιο τελεστή Java καθώς και κάθε μέθοδο από την ενότητα java.lang.math. Η αποθηκευμένη τιμή του αντικειμένου BigInteger δεν μπορεί να τροποποιηθεί λόγω του αμετάβλητου της κλάσης BigInteger.

Παράδειγμα 1:

Το παρακάτω πρόγραμμα παρέχει έναν τρόπο δημιουργίας του BigInteger σε java και εφαρμόζει την αριθμητική πράξη στην παρεχόμενη τιμή BigInteger.








Έχουμε εισαγάγει την κλάση BigInteger από το πακέτο μαθηματικών java μέσα στο πρόγραμμα. Μετά από αυτό, δηλώσαμε τα αντικείμενα BigInteger 'bigInt1' και 'bigInt2' στη μέθοδο main() της κλάσης java 'BigIntegerExample'. Στη συνέχεια, αρχικοποιήσαμε τα αντικείμενα BigInteger με τις μεγάλες αριθμητικές τιμές εντός της κλάσης BigInteger. Έχουμε δημιουργήσει ένα άλλο αντικείμενο της κλάσης BigInteger για την εκτέλεση της αριθμητικής πράξης στην καθορισμένη μεγάλη ακέραια τιμή. Τα αντικείμενα δηλώνονται ως 'Πολλαπλασιασμός' για τον πολλαπλασιασμό της τιμής BinInteger και 'Διαίρεση' για τη διαίρεση της τιμής BigInteger.



Στη συνέχεια, αντιστοιχίσαμε το 'bigInt1' μαζί με τη μέθοδο multiply() του BigInteger στο αντικείμενο 'multiply', το οποίο λαμβάνει την είσοδο 'bigInt2'. Επίσης, καλέσαμε τη μέθοδο division(), η οποία παίρνει την παράμετρο 'bigInt2' που θα διαιρεθεί με 'bigInt1' και εκτυπώνει τα αποτελέσματα μετά την εκτέλεση.



Τα αποτελέσματα της λειτουργίας πολλαπλασιασμού και διαίρεσης στις τιμές BigInteger εμφανίζονται στην παρακάτω εικόνα εξόδου. Αυτός είναι ο τρόπος με τον οποίο διαμορφώνεται ο BigInteger σε java και χρησιμοποιείται για διάφορες λειτουργίες.





Παράδειγμα 2:

Ο παραγοντικός υπολογισμός είναι μια καλή απεικόνιση ενός ακέραιου που παίρνει πολύ μεγάλες εισόδους. Ο BigInteger μπορεί επίσης να χρησιμοποιηθεί για τη λήψη του παραγοντικού για μεγαλύτερες ακέραιες τιμές.




Δημιουργήσαμε τη συνάρτηση 'factorial' της κλάσης BigInteger, όπου το αντικείμενο 'num' του τύπου int μεταβιβάζεται ως όρισμα για να επιστρέψει το παραγοντικό της τιμής 'Num'. Μέσα στη συνάρτηση 'factorial', έχουμε δηλώσει ένα αντικείμενο BigInteger 'max_fict' όπου καθορίζεται η τιμή BigInteger '2'. Μετά από αυτό, αναπτύξαμε τον βρόχο for, ο οποίος θα επαναλάβει και στη συνέχεια θα πολλαπλασιάσει την τιμή 'max_fict' με 4, 5 και μέχρι την nη τιμή καθώς καλείται η μέθοδος multiply(). Το ίδιο το multiply() ονομάζεται μια άλλη μέθοδος 'valueOf', όπου παρέχεται το αντικείμενο 'i' του βρόχου for. Η δήλωση επιστροφής θα παρέχει το μεγαλύτερο παραγοντικό. Στη συνέχεια, δημιουργήσαμε τη μέθοδο main() του προγράμματος. Αρχικοποιήσαμε το αντικείμενο 'Num' με την τιμή και εκτυπώσαμε το παραγοντικό του 'Num' από τη μέθοδο factorial().

Η παραγοντική τιμή του αριθμού '40' παρέχει την τιμή BigInteger ως εξής:

Παράδειγμα 3:

Η συνάρτηση bitCount() της κλάσης BigInteger μετράει τα bit. Η μέθοδος bitCount() παρέχει τον αριθμό των bit που έχουν τη μορφή δύο συμπληρωμάτων σε αυτόν τον BigInteger και είναι διαφορετικά από το bit πρόσημου. Αυτή η μέθοδος επιστρέφει τα bit του συνόλου όταν η τιμή του BigInteger είναι θετική. Από την άλλη πλευρά, εάν ο BigInteger έχει καθοριστεί με αρνητική τιμή, αυτή η μέθοδος επιστρέφει τον αριθμό των bit επαναφοράς.


Έχουμε δηλώσει δύο μεταβλητές, 'b1' και 'b2' κατηγορίας τύπου 'BigInteger'. Ορίσαμε επίσης δύο ακόμη μεταβλητές, 'integer1' και 'integer2', int primitive type. Μετά τη δήλωση, αρχικοποιήσαμε το «b1» με τη θετική τιμή BigInteger και το «b2» με την αρνητική τιμή BigInteger. Στη συνέχεια, έχουμε αντιστοιχίσει το 'integer1' και το 'integer2' με τη μέθοδο bitCount() στις μεταβλητές BigInteger 'b1' και 'b2'. Τα μετρημένα bit θα ληφθούν από τη μέθοδο bitCount() για τις καθορισμένες τιμές BigInteger.

Ο θετικός BigInteger παρέχει τα bit '2' και η αρνητική τιμή του BigInteger εξάγει την τιμή '1' bit.

Παράδειγμα 4:

Η απόλυτη τιμή αριθμητικών δεδομένων μεγάλου μεγέθους στο BigInteger μπορεί να προσδιοριστεί χρησιμοποιώντας τη μέθοδο abs() της κλάσης BigInteger. Η μέθοδος abs() επιστρέφει την απόλυτη τιμή του BigInteger.


Έχουμε μια κλάση BigInteger, από την οποία έχουμε δηλώσει τέσσερις μεταβλητές: 'big1', 'big2', 'big3' και 'big4'. Οι μεταβλητές 'big1' και 'big2' καθορίζονται με θετικές και αρνητικές τιμές, αντίστοιχα. Μετά από αυτό, χρησιμοποιήσαμε τη μέθοδο abs() με 'big1' και 'big2' στις μεταβλητές 'big3' και 'big4'. Σημειώστε ότι η μέθοδος abs() δεν λαμβάνει καμία τιμή εισόδου, αλλά καλείται με τις μεταβλητές 'big1' και 'big2'. Η μέθοδος abs() λαμβάνει την απόλυτη τιμή για αυτές τις μεταβλητές BigInteger και τα αποτελέσματα θα εκτυπωθούν τη στιγμή της μεταγλώττισης.

Η απόλυτη τιμή των θετικών 432 και αρνητικών τιμών 432 είναι η ίδια επειδή η μέθοδος abs() επιστρέφει πάντα τη θετική απόλυτη τιμή.

Παράδειγμα 5:

Η σύγκριση των τιμών BigInteger μπορεί να επιτευχθεί χρησιμοποιώντας τη μέθοδο BigInteger compareTo(). Ο BigInteger συγκρίνεται με τον BigInteger που εισάγεται ως παράμετρος μέσα στη μέθοδο compareTo(). Η επιστρεφόμενη τιμή της μεθόδου compareTo() βασίζεται στις τιμές BigInteger. Όταν η σύγκριση της τιμής BigInteger είναι ίση, τότε επιστρέφεται το μηδέν. Διαφορετικά, τα '1' και '-1' επιστρέφονται με την προϋπόθεση ότι η τιμή BigInteger είναι μεγαλύτερη ή μικρότερη από την τιμή BigInteger που διαβιβάστηκε ως όρισμα.


Έχουμε τη δήλωση αντικειμένων 'MyBigInt1' και 'MyBigtInt2' της κλάσης 'BigInteger'. Αυτά τα αντικείμενα στη συνέχεια καθορίζονται με τις ίδιες τιμές BigInteger. Μετά από αυτό, δημιουργήσαμε ένα άλλο αντικείμενο, το 'comparevalue' όπου το αντικείμενο 'MyBigInt1' καλείται με τη μέθοδο compareTo() και το αντικείμενο 'MyBigInt2' μεταβιβάζεται ως όρισμα για σύγκριση με το αντικείμενο 'MyBigInt2'. Στη συνέχεια, έχουμε μια δήλωση if-else όπου έχουμε ελέγξει εάν τα αποτελέσματα της μεθόδου compareTo() είναι ίσα με την τιμή '0' ή όχι.

Επειδή και τα δύο αντικείμενα BigInteger έχουν τις ίδιες τιμές, τα αποτελέσματα compareTo() επιστρέφουν μηδέν, όπως φαίνεται στην παρακάτω εικόνα.

Παράδειγμα 6:

Η μέθοδος BigInteger flipBit(index) μπορεί επίσης να χρησιμοποιηθεί για την αναστροφή σε μια συγκεκριμένη θέση bit μέσα σε έναν BigInteger. Αυτή η μέθοδος αξιολογεί (bigInt ^ (1<


Έχουμε ορίσει δύο μεταβλητές BigInteger, 'B_val1' και 'B_val2'. Η μεταβλητή 'B_val1' αρχικοποιείται με την κλάση BigInteger, όπου καθορίζεται η τιμή. Στη συνέχεια, έχουμε ορίσει τη μεταβλητή 'B_val2' με τη μέθοδο flipBit(), όπου η λειτουργία flipBit εκτελείται στη μεταβλητή 'B_value' με την τιμή ευρετηρίου '2'.

Η θέση ευρετηρίου της τιμής BigInteger '9' αντιστρέφεται με τον δείκτη '2', ο οποίος εξάγει την τιμή '13' στην έξοδο.

συμπέρασμα

Η κλάση BigInteger είναι πολύ βολική στη χρήση και χρησιμοποιείται συχνά στον ανταγωνιστικό προγραμματισμό λόγω της τεράστιας βιβλιοθήκης μεθόδων της. Ο BigInteger χρησιμοποιείται για τον υπολογισμό πολύ μεγάλων αριθμών που υπερβαίνουν τη χωρητικότητα όλων των επί του παρόντος προσβάσιμων πρωτόγονων τύπων δεδομένων. Παρέχει διάφορες μεθόδους για αρθρωτές αριθμητικές πράξεις. Δημιουργήσαμε πρώτα τον BigInteger και μετά καλύψαμε μερικές από τις μεθόδους του.