BigInteger للأعداد الضخمة
أعداد صحيحة بدقة عشوائية
BigInteger للأعداد الضخمة درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
ما بعد long
يمكن للنوع البدائي long تخزين قيم تصل إلى نحو 9.2 كوينتيليون. وعندما تحتاج إلى أعداد صحيحة أكبر من ذلك، توفر Java الفئة BigInteger من الحزمة java.math، والتي لا تملك حدًا أعلى ثابتًا.
عند تجاوز long سعته
يؤدي تجاوز Long.MAX_VALUE إلى التفاف القيمة بصمت لتصبح عددًا سالبًا. ويمثل هذا الفساد مصدرًا شائعًا للأخطاء.
public class Main {
public static void main(String[] args) {
long max = Long.MAX_VALUE;
System.out.println(max);
System.out.println(max + 1);
}
}إنشاء BigInteger
أنشئ BigInteger من سلسلة من الأرقام. لا يوجد حد لطولها، لذا يمكنك كتابة أعداد أكبر بكثير من أي نوع بدائي.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger huge = new BigInteger("123456789012345678901234567890");
System.out.println(huge);
}
}من long باستخدام valueOf
إذا كانت قيمة البداية ملائمة لنوع long، فإن BigInteger.valueOf يوفر طريقة مصنع ملائمة.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger n = BigInteger.valueOf(1000000);
System.out.println(n);
}
}الحساب غير القابل للتغيير
مثل BigDecimal، فإن BigInteger غير قابل للتغيير. تعيد add وsubtract وmultiply كائنات جديدة يجب حفظها.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = new BigInteger("99999999999999999999");
BigInteger b = BigInteger.valueOf(1);
System.out.println(a.add(b));
}
}ضرب الأعداد الكبيرة
تعمل عمليات الضرب التي قد تسبب تجاوز سعة long بشكل سليم عند استخدام BigInteger.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = new BigInteger("10000000000");
BigInteger b = new BigInteger("10000000000");
System.out.println(a.multiply(b));
}
}حساب المضروب
تنمو قيم المضروب بسرعة هائلة. فحتى مضروب العدد 30 يتجاوز سعة long، لكن BigInteger يتعامل معه بسهولة.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger result = BigInteger.ONE;
for (int i = 1; i <= 30; i++) {
result = result.multiply(BigInteger.valueOf(i));
}
System.out.println(result);
}
}الأس والقيمة المتبقية
ترفع pow قيمةً إلى أس صحيح، بينما تعطي mod الباقي. ويشيع استخدام كلتيهما في التشفير.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger base = BigInteger.valueOf(2);
System.out.println(base.pow(64));
System.out.println(base.pow(10).mod(BigInteger.valueOf(7)));
}
}مقارنة القيم
استخدم compareTo لترتيب قيمتي BigInteger. فهي تعيد عددًا سالبًا أو صفرًا أو عددًا موجبًا.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger a = new BigInteger("500");
BigInteger b = new BigInteger("1000");
System.out.println(a.compareTo(b));
}
}ثوابت مفيدة
توفر BigInteger الثوابت ZERO وONE وTWO وTEN. استخدمها كقيم ابتدائية لمتغيرات التجميع أو داخل الحلقات.
import java.math.BigInteger;
public class Main {
public static void main(String[] args) {
BigInteger sum = BigInteger.ZERO;
sum = sum.add(BigInteger.TEN).add(BigInteger.ONE);
System.out.println(sum);
}
}متى تستخدمه
استخدم BigInteger للمضروب، والعدادات الكبيرة جدًا، والمفاتيح التشفيرية، وفي أي موضع قد تتجاوز فيه النتيجة سعة long. أما في عمليات العد العادية، فالتزم بالأنواع البدائية لأنها أسرع بكثير.
اختبار سريع
اختبر فهمك لـ BigInteger.
مراجعة
تعلّمت كيفية استخدام BigInteger:
- يتجاوز
longسعته بصمت، بينما لا يملكBigIntegerحدًا ثابتًا - أنشئه من سلسلة نصية أو باستخدام
valueOf - هو غير قابل للتغيير، لذا احفظ نتيجة كل عملية
- تغطي
addوmultiplyوpowوmodالعمليات الحسابية الشائعة - استخدمه للمضروب والتشفير وأي قيمة أكبر من سعة
long
الأسئلة الشائعة
هل درس «BigInteger للأعداد الضخمة» مجاني؟
نعم — نص درس «BigInteger للأعداد الضخمة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «BigInteger للأعداد الضخمة»؟
أعداد صحيحة بدقة عشوائية تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «BigInteger للأعداد الضخمة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا لا نستخدم double للأموال
- العمل باستخدام BigDecimal
- التقريب والمقياس
- BigInteger للأعداد الضخمة