Java BigInteger

Java Biginteger



Java biedt een speciale BigInteger-klasse voor het beheren van extreem grote getallen die groter zijn dan 64-bits getallen. De grootte van de gehele waarden die deze klasse aankan, wordt simpelweg beperkt door het toegewezen geheugen van de JVM. De klasse BigInteger, die een Number erft. implementeert de Comparable-interface. Het geeft equivalenten voor elke primitieve integer-operator van Java, evenals voor elke methode uit de java.lang.math-module. De opgeslagen waarde van het BigInteger-object kan niet worden gewijzigd vanwege de onveranderlijkheid van de BigInteger-klasse.

Voorbeeld 1:

Het volgende programma biedt een manier om de BigInteger in Java te maken en past de rekenkundige bewerking toe op de opgegeven BigInteger-waarde.








We hebben de BigInteger-klasse geïmporteerd uit het java-wiskundepakket in het programma. Daarna hebben we de BigInteger-objecten 'bigInt1' en 'bigInt2' gedeclareerd in de methode main() van de java-klasse 'BigIntegerExample'. Vervolgens hebben we de BigInteger-objecten geïnitialiseerd met de grote numerieke waarden binnen de BigInteger-klasse. We hebben een ander object van de klasse BigInteger gemaakt voor het uitvoeren van de rekenkundige bewerking op de opgegeven grote gehele waarde. De objecten worden gedeclareerd als 'Vermenigvuldiging' voor het vermenigvuldigen van de BinInteger-waarde en 'Delen' voor het delen van de BigInteger-waarde.



Vervolgens hebben we de 'bigInt1' samen met de methode multiply() van BigInteger toegewezen aan het object 'multiply', dat de invoer 'bigInt2' gebruikt. We hebben ook de methode division() genoemd, die de parameter 'bigInt2' neemt die wordt gedeeld door 'bigInt1', en de resultaten na uitvoering afdrukt.



De resultaten van de vermenigvuldiging en deling op de BigInteger-waarden worden weergegeven in de volgende uitvoerafbeelding. Dit is hoe de BigInteger in Java is geconfigureerd en voor verschillende bewerkingen wordt gebruikt.





Voorbeeld 2:

Factoriële berekening is een goede illustratie van een geheel getal dat zeer grote invoer krijgt. De BigInteger kan ook worden gebruikt om de faculteit te krijgen voor grotere integerwaarden.




We hebben de functie 'faculteit' van de klasse BigInteger gemaakt, waarbij het object 'num' van het type int wordt doorgegeven als een argument om de faculteit van de waarde 'Num' te retourneren. Binnen de functie 'faculteit' hebben we een BigInteger-object 'max_fict' gedeclareerd waarbij de BigInteger-waarde '2' is opgegeven. Daarna hebben we de for-lus geïmplementeerd, die de waarde 'max_fict' herhaalt en vervolgens vermenigvuldigt met 4, 5 en tot de n-de waarde wanneer de methode multiply() wordt aangeroepen. De vermenigvuldiging() zelf wordt een andere 'valueOf'-methode genoemd, waarbij het object 'i' van de for-lus wordt geleverd. De return-instructie geeft de grotere faculteit. Vervolgens hebben we de methode main() van het programma vastgesteld. We initialiseerden het object 'Num' met de waarde en drukten de faculteit van het 'Num' uit de methode faculteit() af.

De faculteitswaarde van het getal '40' geeft de BigInteger-waarde als volgt:

Voorbeeld 3:

De functie bitCount() van de klasse BigInteger telt de bits. De methode bitCount() levert het aantal bits dat de vorm heeft van twee complementen in deze BigInteger en verschilt van het tekenbit. Deze methode retourneert de ingestelde bits wanneer de waarde van de BigInteger positief is. Aan de andere kant, als de BigInteger is opgegeven met een negatieve waarde, retourneert deze methode het aantal resetbits.


We hebben twee variabelen gedeclareerd, 'b1' en 'b2' van de typeklasse 'BigInteger'. We hebben ook nog twee variabelen gedefinieerd, 'integer1' en 'integer2', int primitief type. Na de declaratie hebben we de 'b1' geïnitialiseerd met de positieve BigInteger-waarde en de 'b2' met de negatieve BigInteger-waarde. Vervolgens hebben we de 'integer1' en 'integer2' met de methode bitCount() toegewezen aan de BigInteger-variabelen 'b1' en 'b2'. De getelde bits worden verkregen via de methode bitCount() voor de opgegeven BigInteger-waarden.

De positieve BigInteger levert de '2' bits en de negatieve waarde van BigInteger geeft de '1' bitwaarde weer.

Voorbeeld 4:

De absolute waarde van grote numerieke gegevens in BigInteger kan worden bepaald met behulp van de methode abs() van de klasse BigInteger. De methode abs() retourneert de absolute waarde van BigInteger.


We hebben een BigInteger-klasse, waaruit we vier variabelen hebben gedeclareerd: 'big1', 'big2', 'big3' en 'big4'. De variabelen 'big1' en 'big2' worden gespecificeerd met respectievelijk positieve en negatieve waarden. Daarna hebben we de methode abs() aangeroepen met 'big1' en 'big2' in de variabelen 'big3' en 'big4'. Merk op dat de methode abs() geen invoerwaarde aanneemt, maar wordt aangeroepen met de variabelen 'big1' en 'big2'. De methode abs() haalt de absolute waarde op voor deze BigInteger-variabelen en de resultaten worden tijdens het compileren afgedrukt.

De absolute waarde van positieve 432 en negatieve 432 waarden is hetzelfde omdat de methode abs() altijd de positieve absolute waarde retourneert.

Voorbeeld 5:

De vergelijking van de BigInteger-waarden kan worden bereikt met behulp van de BigInteger-methode CompareTo(). De BigInteger wordt vergeleken met de BigInteger die wordt ingevoerd als een parameter in de methode CompareTo(). De geretourneerde waarde van de methode CompareTo() is gebaseerd op de BigInteger-waarden. Wanneer de vergelijking van de BigInteger-waarde gelijk is, wordt nul geretourneerd. Anders worden '1' en '-1' geretourneerd op voorwaarde dat de BigInteger-waarde groter of kleiner is dan de BigInteger-waarde die als argument is doorgegeven.


We hebben objecten 'MyBigInt1' en 'MyBigtInt2' declaratie van de klasse 'BigInteger'. Deze objecten worden vervolgens gespecificeerd met dezelfde BigInteger-waarden. Daarna hebben we een ander object gemaakt, 'comparevalue', waarbij het object 'MyBigInt1' wordt aangeroepen met de methode CompareTo() en het object 'MyBigInt2' wordt doorgegeven als een argument om te vergelijken met het object 'MyBigInt2'. Vervolgens hebben we een if-else-instructie waarin we hebben gecontroleerd of de resultaten van de methode CompareTo() gelijk zijn aan de waarde '0' of niet.

Omdat beide BigInteger-objecten dezelfde waarden hebben, retourneren de CompareTo()-resultaten nul, zoals te zien is in de onderstaande afbeelding.

Voorbeeld 6:

De BigInteger flipBit(index) methode kan ook gebruikt worden om naar een specifieke bitlocatie binnen een BigInteger te spiegelen. Deze methode evalueert (bigInt ^ (1<


We hebben twee BigInteger-variabelen gedefinieerd, 'B_val1' en 'B_val2'. De variabele 'B_val1' wordt geïnitialiseerd met de klasse BigInteger, waar de waarde wordt opgegeven. Vervolgens hebben we de variabele 'B_val2' ingesteld met de flipBit()-methode, waarbij de flipBit-bewerking wordt uitgevoerd op de variabele 'B_value' met de indexwaarde '2'.

De indexpositie van de BigInteger-waarde '9' wordt omgedraaid met de index '2', die de waarde '13' in de uitvoer uitvoert.

Conclusie

De BigInteger-klasse is erg handig in gebruik en wordt vanwege de uitgebreide methodebibliotheek vaak gebruikt in competitieve programmering. De BigInteger wordt gebruikt voor de berekening van zeer lange getallen die de capaciteit van alle momenteel toegankelijke primitieve gegevenstypen te boven gaan. Het biedt verschillende methoden voor modulaire rekenkundige bewerkingen. We hebben eerst de BigInteger gemaakt en vervolgens enkele van zijn methoden besproken.