تخزين الأعداد الحقيقية في الحاسوب (الدقة العادية والمضاعفة)

admin
الصفحة الرئيسية
تخزين الأعداد الحقيقية في الحاسوب (الدقة العادية والمضاعفة)
تخزين الأعداد الحقيقية في الحاسوب (الدقة العادية والمضاعفة)

تخزين الأعداد الحقيقية في الحاسوب (الدقة العادية والمضاعفة)

المقدمة

تخزين الأعداد الحقيقية في الحاسوب يتم باستخدام نظام الفاصلة العائمة (Floating-Point) وفق المعيار العالمي IEEE 754. هذا الدرس يشرح بالتفصيل:

  • تمثيل الأعداد بدقة عادية (32 بت)
  • تمثيل الأعداد بدقة مضاعفة (64 بت)
  • الفروقات بينهما
  • مشاكل الدقة والخطأ التقريبي

1. المعيار IEEE 754 (نظرة عامة)

يحدد هذا المعيار طريقتين رئيسيتين:

  • الدقة العادية (Single Precision): 32 بت
  • الدقة المضاعفة (Double Precision): 64 بت

مكونات التمثيل:

المكون الدقة العادية (32 بت) الدقة المضاعفة (64 بت)
بت الإشارة (S) 1 بت 1 بت
الأس (Exponent) 8 بت 11 بت
الجزء الكسري (Mantissa) 23 بت 52 بت
التحيز (Bias) 127 1023

2. تمثيل الدقة العادية (32 بت)

البنية:

S (1 بت) | Exponent (8 بت) | Mantissa (23 بت)

طريقة الحساب:

القيمة = (-1)S × 1.M × 2E - 127

مثال تطبيقي:

مثل العدد -13.75 بدقة عادية.

الحل:

  • الإشارة (S): 1 (لأن العدد سالب)
  • التحويل إلى ثنائي:
    • الجزء الصحيح: 1310 = 11012
    • الجزء الكسري: 0.7510 = 0.112
    • العدد الكامل: 13.7510 = 1101.112
  • التطبيع (Normalization):
    • 1101.112 = 1.10111 × 23
  • الأس (Exponent):
    • E = 3 + 127 = 13010 = 100000102
  • الجزء الكسري (Mantissa):
    • M = 101110000000000000000002
  • التمثيل النهائي:
    • 1 10000010 101110000000000000000002

3. تمثيل الدقة المضاعفة (64 بت)

البنية:

S (1 بت) | Exponent (11 بت) | Mantissa (52 بت)

طريقة الحساب:

القيمة = (-1)S × 1.M × 2E - 1023

مثال تطبيقي:

مثل العدد 0.15625 بدقة مضاعفة.

الحل:

  • الإشارة (S): 0 (موجب)
  • التحويل إلى ثنائي:
    • 0.15625 × 2 = 0.3125 (خذ 0)
    • 0.3125 × 2 = 0.625 (خذ 0)
    • 0.625 × 2 = 1.25 (خذ 1)
    • 0.25 × 2 = 0.5 (خذ 0)
    • 0.5 × 2 = 1.0 (خذ 1)
    • 0.1562510 = 0.001012
  • التطبيع:
    • 0.001012 = 1.01 × 2-3
  • الأس:
    • E = -3 + 1023 = 102010 = 011111111002
  • الجزء الكسري:
    • M = 01000000000000000000000000000000000000000000000000002
  • التمثيل النهائي:
    • 0 01111111100 01000000000000000000000000000000000000000000000000002

4. مقارنة بين الدقة العادية والمضاعفة

المعيار الدقة العادية (32 بت) الدقة المضاعفة (64 بت)
النطاق التقريبي ±10±38 ±10±308
الدقة العشرية ~7 أرقام ~15 رقم
استهلاك الذاكرة 4 بايت 8 بايت
الاستخدام الشائع رسوميات، ألعاب حسابات علمية، مالية
مثال على القيم الخاصة NaN, Infinity دقة أعلى في الحسابات

5. مشاكل الدقة والخطأ التقريبي

5.1. الأخطاء الشائعة

  • خطأ التقريب (Rounding Error):
    • مثال: 0.1 + 0.2 ≠ 0.3 في الحاسوب!
    • السبب: لا يمكن تمثيل 0.1 بدقة في النظام الثنائي.
  • الانزياح (Cancellation):
    • عند طرح عددين متقاربين جدًا، تفقد الدقة.

5.2. كيفية تجنب المشاكل

  • استخدم الدقة المضاعفة للحسابات الحساسة.
  • تجنب المقارنات المباشرة بين أعداد浮点数 (استخدم هامش خطأ مسموح به).

6. تمارين تطبيقية

التمرين 1: التحويل إلى Single Precision

حول العدد 7.3 إلى تمثيل 32 بت.

تلميح: 0.3 في الثنائي دوري!

التمرين 2: قراءة تمثيل Double Precision

فسر التمثيل التالي:

0 10000000010 110000000000000...00002 (52 بت للجزء الكسري)

التمرين 3: حساب الخطأ التقريبي

احسب الفرق بين (0.1 + 0.2) - 0.3 في Python أو أي لغة برمجة، وناقش النتيجة.

الخاتمة

الدقة العادية (32 بت) كافية لمعظم التطبيقات العادية.

الدقة المضاعفة (64 بت) ضرورية للحسابات العلمية الدقيقة.

فهم تمثيل Floating-Point يساعد في تجنب الأخطاء البرمجية الشائعة.

جرب بنفسك: استخدم محول IEEE 754 أونلاين للتحقق من تمارينك!

ملحق: قيم خاصة في IEEE 754

القيمة الأس الجزء الكسري
صفر 000...0 000...0
ما لا نهاية (∞) 111...1 000...0
NaN (Not a Number) 111...1 غير صفر
google-playkhamsatmostaqltradent