تمثيل الأعداد بالفاصلة الثابتة والعائمة في الحاسوب
المقدمة
في الأنظمة الرقمية، يتم تمثيل الأعداد الكسرية بطريقتين رئيسيتين: الفاصلة الثابتة (Fixed-Point) والفاصلة العائمة (Floating-Point). يختلف التمثيلان في الدقة، النطاق، والتعقيد الحسابي. هذا الدرس يشرح كلا النظامين بتفصيل تقني مدعم بأمثلة عملية وتمارين تطبيقية.
1. تمثيل الأعداد الكسرية في النظام الثنائي
الأعداد الكسرية في النظام الثنائي تُكتب على الصورة:
N = ±(d-1 d-2 ... d-m)2
حيث:
- d-1 هي خانة 1/2
- d-2 هي خانة 1/4
- وهكذا...
مثال تحويلي:
حول العدد الكسري 5.625 إلى ثنائي.
الحل:
الجزء الصحيح:
510 = 1012
الجزء الكسري:
- 0.625 × 2 = 1.25 (خذ 1)
- 0.25 × 2 = 0.5 (خذ 0)
- 0.5 × 2 = 1.0 (خذ 1)
إذن:
0.62510 = 0.1012
النتيجة النهائية:
5.62510 = 101.1012
2. تمثيل الأرقام بطريقة الفاصلة الثابتة (Fixed-Point)
في هذا النظام، يتم تخصيص عدد ثابت من البتات للجزء الصحيح وعدد ثابت للجزء الكسري.
الخصائص:
- الثبات: موقع الفاصلة ثابت (مثلاً 8 بت للجزء الصحيح، 8 بت للجزء الكسري).
- الدقة: محدودة بعدد البتات المخصصة للجزء الكسري.
- النطاق: أصغر من الفاصلة العائمة.
مثال (تمثيل 16 بت: 8 للصحيح، 8 للكسري):
مثل العدد 3.75 في هذا النظام.
الحل:
التحويل إلى ثنائي:
310 = 000000112
0.7510 = 0.110000002
الدمج:
3.7510 = 00000011 110000002
مزايا وعيوب:
الميزة | العيب |
---|---|
بساطة التطبيق في الأجهزة | نطاق عدد محدود |
سرعة في التنفيذ | دقة محدودة |
مناسب للتطبيقات البسيطة | غير عملي للأعداد الكبيرة جدًا أو الصغيرة جدًا |
3. تمثيل الأرقام بطريقة الفاصلة العائمة (Floating-Point)
يتبع هذا النظام المعيار IEEE 754، ويُستخدم في معظم الحواسيب الحديثة. يتكون التمثيل من:
القيمة = (-1)S × M × 2E - Bias
حيث:
- S: بت الإشارة (0 موجب، 1 سالب)
- E: الأس (Exponent)
- M: الجزء الكسري (Mantissa)
3.1. التمثيل بـ 32 بت (Single Precision):
- 1 بت للإشارة
- 8 بت للأس
- 23 بت للجزء الكسري
مثال:
مثل العدد -6.625 باستخدام IEEE 754 (32 بت).
الحل:
- الإشارة: S = 1 (لأن العدد سالب)
- التحويل إلى ثنائي:
- 610 = 1102
- 0.62510 = 0.1012
- إذن: 6.62510 = 110.1012
- التطبيع (Normalization):
- 110.1012 = 1.10101 × 22
- الأس:
- E = 2 + 127 = 12910 = 100000012
- الجزء الكسري:
- M = 101010000000000000000002
- التمثيل النهائي:
- 1 10000001 101010000000000000000002
3.2. مقارنة بين Single و Double Precision:
المعيار | Single (32 بت) | Double (64 بت) |
---|---|---|
بتات الأس | 8 | 11 |
بتات الجزء الكسري | 23 | 52 |
الدقة | ~7 أرقام عشرية | ~15 رقم عشري |
النطاق | ±10±38 | ±10±308 |
4. الشكل المعياري للعدد (Normalization)
الهدف هو تمثيل العدد بالصورة:
1.M × 2E
حيث:
- الجزء الصحيح دائمًا 1 (مضمر)
- الأس معدل (باستخدام Bias)
مثال تطبيقي:
طبع تطبيع العدد 0.0011012.
الحل:
- حرك الفاصلة لليمين حتى يصبح الجزء الصحيح 1:
- 0.0011012 = 1.1012 × 2-3
- الأس المعدل:
- E = -3 + 127 = 12410 = 011111002
5. التطبيق النهائي: تمارين وحلول
التمرين 1: التحويل إلى Fixed-Point (8 بت للصحيح، 8 بت للكسري)
حول الأعداد التالية:
- 4.375
- -2.125
التمرين 2: التحويل إلى Floating-Point (32 بت)
حول الأعداد التالية وفق IEEE 754:
- 12.5
- -0.375
التمرين 3: تفسير تمثيل Floating-Point
فسر التمثيل التالي (32 بت):
1 10000011 101000000000000000000002
الخاتمة
يعد فهم تمثيل الأعداد الكسرية أساسياً في:
- برمجة الأنظمة المدمجة (Fixed-Point)
- الحسابات العلمية (Floating-Point)
- تطبيقات الذكاء الاصطناعي (الدقة المزدوجة)
نصيحة أخيرة: عند العمل مع Floating-Point، انتبه لأخطاء التقريب في العمليات الحسابية المتكررة!