جافا BigInteger

Jafa Biginteger



تقدم Java فئة BigInteger خاصة لإدارة الأعداد الكبيرة للغاية التي تزيد عن أرقام 64 بت. يتم تقييد حجم القيم الصحيحة التي يمكن لهذه الفئة التعامل معها ببساطة بواسطة الذاكرة المخصصة لـ JVM. تقوم فئة BigInteger ، التي ترث رقمًا ، بتنفيذ الواجهة القابلة للمقارنة. يعطي مكافئات لكل عامل تشغيل Java بدائي وكذلك كل طريقة من الوحدة النمطية java.lang.math. لا يمكن تعديل القيمة المخزنة لكائن BigInteger بسبب ثبات فئة BigInteger.

مثال 1:

يوفر البرنامج التالي طريقة لإنشاء BigInteger في جافا ويطبق العملية الحسابية على قيمة BigInteger المقدمة.








لقد قمنا باستيراد فئة BigInteger من حزمة java math داخل البرنامج. بعد ذلك ، أعلنا عن كائنات BigInteger 'bigInt1' و 'bigInt2' في الطريقة الرئيسية () لفئة جافا 'BigIntegerExample.' بعد ذلك ، قمنا بتهيئة كائنات BigInteger بالقيم الرقمية الكبيرة داخل فئة BigInteger. لقد أنشأنا كائنًا آخر من فئة BigInteger لإجراء العملية الحسابية على قيمة عدد صحيح كبير محدد. يتم تعريف الكائنات على أنها 'ضرب' لمضاعفة قيمة BinInteger و 'تقسيم' لتقسيم قيمة BigInteger.



بعد ذلك ، قمنا بتعيين 'bigInt1' جنبًا إلى جنب مع طريقة الضرب () الخاصة بـ BigInteger للكائن 'الضرب' ، والذي يأخذ الإدخال 'bigInt2'. أيضًا ، أطلقنا على طريقة التقسيم () ، والتي تأخذ المعلمة 'bigInt2' والتي سيتم تقسيمها بـ 'bigInt1' ، وتطبع النتائج بعد التنفيذ.



تظهر نتائج عملية الضرب والقسمة على قيم BigInteger في صورة الإخراج التالية. هذه هي الطريقة التي يتم بها تكوين BigInteger في جافا واستخدامه في عمليات مختلفة.





المثال 2:

حساب العوامل هو توضيح جيد لعدد صحيح يحصل على مدخلات كبيرة جدًا. يمكن أيضًا استخدام BigInteger للحصول على العامل لقيم عدد صحيح أكبر.




لقد أنشأنا دالة 'عاملة' لفئة BigInteger ، حيث يتم تمرير الكائن 'num' من النوع int كوسيطة لإرجاع عاملي القيمة 'Num'. داخل دالة 'العوامل' ، أعلنا عن كائن BigInteger 'max_fict' حيث تم تحديد قيمة BigInteger '2'. بعد ذلك ، قمنا بنشر الحلقة for-loop ، والتي ستقوم بالتكرار ثم مضاعفة قيمة 'max_fict' في 4 ، 5 ، وحتى القيمة n حيث يتم استدعاء طريقة multiply (). يُطلق على الضرب () نفسه طريقة 'valueOf' أخرى ، حيث يتم توفير الكائن 'i' من الحلقة for-loop. بيان الإرجاع سيوفر العامل الأكبر. بعد ذلك ، أنشأنا الطريقة الرئيسية () للبرنامج. قمنا بتهيئة الكائن 'Num' بالقيمة وطبعنا عاملي 'Num' من طريقة العوامل ().

توفر القيمة المضروبة للرقم '40' قيمة BigInteger على النحو التالي:

المثال 3:

تحسب الدالة bitCount () لفئة BigInteger البتات. توفر طريقة bitCount () عدد البتات الموجودة في شكل مكملين في BigInteger هذا ومختلفين عن بت الإشارة. تقوم هذه الطريقة بإرجاع مجموعة البتات عندما تكون قيمة BigInteger موجبة. من ناحية أخرى ، إذا تم تحديد BigInteger بقيمة سالبة ، فإن هذه الطريقة تُرجع عدد بتات إعادة التعيين.


لقد أعلنا عن متغيرين ، 'b1' و 'b2' من فئة النوع 'BigInteger'. لقد حددنا أيضًا متغيرين آخرين ، 'عدد صحيح 1' و 'عدد صحيح 2' نوع أولي. بعد الإعلان ، قمنا بتهيئة 'b1' بقيمة BigInteger الموجبة و 'b2' بقيمة BigInteger السلبية. بعد ذلك ، قمنا بتعيين 'عدد صحيح 1' و 'عدد صحيح 2' باستخدام طريقة bitCount () لمتغيري BigInteger 'b1' و 'b2'. سيتم الحصول على البتات المحسوبة من طريقة bitCount () لقيم BigInteger المحددة.

يوفر BigInteger الموجب البتات '2' ، وتنتج القيمة السالبة لـ BigInteger قيمة بت '1'.

المثال 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 ComparTo (). تتم مقارنة BigInteger مع BigInteger الذي يتم إدخاله كمعامل داخل طريقة CompareTo (). تستند قيمة الإرجاع الخاصة بأسلوب CompareTo () إلى قيم BigInteger. عندما تكون المقارنة بين قيمة BigInteger متساوية ، يتم إرجاع الصفر. وبخلاف ذلك ، يتم إرجاع '1' و '-1' بشرط أن تكون قيمة BigInteger أكبر من أو أصغر من قيمة BigInteger التي تم تمريرها كوسيطة.


لدينا كائنات 'MyBigInt1' و 'MyBigtInt2' إعلان للفئة 'BigInteger'. ثم يتم تحديد هذه الكائنات بنفس قيم BigInteger. بعد ذلك ، أنشأنا كائنًا آخر ، 'Comparevalue' حيث يتم استدعاء الكائن 'MyBigInt1' باستخدام طريقة CompareTo () ، ويتم تمرير الكائن 'MyBigInt2' كوسيطة للمقارنة مع الكائن 'MyBigInt2'. بعد ذلك ، لدينا عبارة if-else حيث تحققنا مما إذا كانت نتائج طريقة CompareTo () تساوي القيمة '0' أم لا.

نظرًا لأن كلا من كائنات BigInteger لهما نفس القيم ، فإن نتائج المقارنة () ترجع صفرًا ، كما هو موضح في الصورة أدناه.

المثال 6:

يمكن أيضًا استخدام طريقة BigInteger flipBit (index) للقلب في موقع بت محدد داخل BigInteger. تقيّم هذه الطريقة (bigInt ^ (1 << n)). ستعكس هذه الطريقة بت bigInteger في أي فهرس محدد في تمثيلها الثنائي.


لقد حددنا متغيرين BigInteger ، 'B_val1' و 'B_val2.' تتم تهيئة المتغير 'B_val1' باستخدام فئة BigInteger ، حيث يتم تحديد القيمة. بعد ذلك ، قمنا بتعيين المتغير 'B_val2' باستخدام طريقة flipBit () ، حيث يتم تنفيذ عملية flipBit على المتغير 'B_value' بقيمة المؤشر '2.'

يتم قلب موضع مؤشر قيمة BigInteger '9' باستخدام الفهرس '2' ، والذي ينتج عنه القيمة '13' في الإخراج.

استنتاج

تعتبر فئة BigInteger ملائمة جدًا للاستخدام وتستخدم بشكل متكرر في البرمجة التنافسية نظرًا لمكتبة الطرق الواسعة. يتم استخدام BigInteger لحساب الأرقام الطويلة جدًا التي تتجاوز سعة جميع أنواع البيانات الأولية التي يمكن الوصول إليها حاليًا. يوفر طرقًا مختلفة لعمليات الحساب المعيارية. أنشأنا BigInteger أولاً ثم غطينا بعضًا من أساليبها.