محوّل نقطة العائمة IEEE 754
المدخلات
| الدقة | فردية (32 بتًا) |
|---|---|
| العدد العشري | 3.14 |
محوّل نقطة العائمة IEEE 754
تحليل أي رقم عشري إلى حقوله الثنائية وفق معيار IEEE 754: بت الإشارة وحقل الأس وبتات الكسر والنمط الست عشري والقيمة المخزّنة الفعلية.
المدخلات
العدد
النتائج
أدخل قيمة لعرض النتائج.
تخطيط البتات
القيمة المخزّنة
النقطة العائمة IEEE 754
تُخزَّن الأعداد في المعالجات الحديثة وفق معيار IEEE 754، وهو المعيار المعتمد منذ عام 1985 والمُنقَّح عام 2008، الذي تلتزم به كل لغات البرمجة الرئيسية ووحدات المعالجة المركزية والرسومية. يُعبّر المعيار عن العدد من خلال ثلاثة حقول ثنائية تُعبّئ في كلمة واحدة ذات طول ثابت: بت الإشارة وحقل الأس وبتات الكسر.
تخطيط الحقول الثنائية
في الدقة الفردية (32 بتًا) تُوزَّع الحقول كالآتي:
| الحقل | موضع البت | العرض |
|---|---|---|
| الإشارة | 31 | 1 بت |
| الأس | 30–23 | 8 بتات |
| الكسر | 22–0 | 23 بتًا |
في الدقة المزدوجة (64 بتًا) يتسع حقل الأس إلى 11 بتًا وحقل الكسر إلى 52 بتًا، في حين تبقى الإشارة بتًا واحدًا.
تُحسب قيمة العدد الاعتيادي بالصيغة:
(−1)S×1.M×2E−biasحيث بت الإشارة، و الجزء الكسري المخزَّن بالنظام الثنائي، والانحياز (bias) يساوي 127 في الدقة الفردية و1023 في الدقة المزدوجة. البت 1 في المقدار مضمنة ضمنيًا ولا تُخزَّن، مما يُتيح بتًا إضافيًا مجانيًا من الدقة.
قراءة حقل الأس
يُخزَّن الأس بعد إضافة الانحياز إليه، لا بشكل مباشر. فإن كان الأس الفعلي ، يُخزَّن في الحقل العدد . على سبيل المثال، العدد 3.14 في الدقة الفردية لأسه الفعلي 1، فيُخزَّن في حقل الأس القيمة ، ويُعرضها المحوّل في صورة 10000000 (128 − 127 = 1) لتسهيل التحقق.
لماذا لا يُمثَّل العدد 0.1 بدقة تامة؟
معظم الكسور العشرية لا تنتهي حين تُكتب بالنظام الثنائي. الكسر 0.1 يتمدد في الثنائي كتسلسل متكرر:
0.110=0.0001100110011…2لمّا كان حقل الكسر محدود العرض (23 بتًا للدقة الفردية، 52 بتًا للمزدوجة)، يُقرَّب هذا التسلسل إلى أقرب قيمة قابلة للتمثيل. في الدقة المزدوجة تبلغ القيمة المخزَّنة نحو 0.10000000000000000555، قريبة من 0.1 لكن ليست مساوية له تمامًا. عند جمع عددين مقرَّبين من هذا النوع تتراكم الأخطاء:
0.1+0.2=0.30000000000000004هذه النتيجة ليست خللًا، بل نتيجة حتمية للتمثيل الثنائي ذي العرض المحدود. يُظهر حقل القيمة المخزّنة المكافئ العشري الدقيق لنمط البتات، فيكشف أثر التقريب لأي عدد يُدخَل.
القيم الخاصة
يحتجز معيار IEEE 754 نمطَين من أنماط الأس لتمثيل حالات خاصة:
| بتات الأس | بتات الكسر | المعنى |
|---|---|---|
| جميعها أصفار | جميعها أصفار | ±صفر |
| جميعها أصفار | غير أصفار | عدد دون الاعتيادي (صغير جدًا) |
| جميعها واحدات (255/2047) | جميعها أصفار | ±لانهاية |
| جميعها واحدات (255/2047) | غير أصفار | NaN (ليس عددًا) |
تُتيح الأعداد دون الاعتيادية (subnormal) تمثيل قيم أصغر من أدنى عدد اعتيادي على حساب انخفاض الدقة. تنشأ اللانهاية عن الفيض أو القسمة على صفر. أما NaN فيُنتجه عمليات غير معرَّفة كـ0 ÷ 0 أو الجذر التربيعي لعدد سالب.
الدقة الفردية مقابل المزدوجة
تتسع الدقة الفردية في 32 بتًا وتُعطي نحو 7 أرقام عشرية معنوية، وتمتد قيمها من ±1.2 × 10⁻³⁸ إلى ±3.4 × 10³⁸. أما الدقة المزدوجة فتستخدم 64 بتًا وتُوفّر من 15 إلى 17 رقمًا معنويًا، وتغطي المدى من ±2.2 × 10⁻³⁰⁸ إلى ±1.8 × 10³⁰⁸.
معظم لغات البرمجة العامة تتخذ الدقة المزدوجة نوعًا افتراضيًا لمتغيرات النقطة العائمة. وتسود الدقة الفردية في مسارات معالجة الرسومات وأوزان النماذج في التعلم الآلي والبرامج الثابتة للأنظمة المدمجة، حيث تُقدَّم سعة نقل البيانات وكفاءة الذاكرة على الدقة الحسابية.
قراءة مخرجات الست عشري
يُكثّف حقل الست عشري نمط البتات في رمز مختصر؛ كل خانة ست عشرية تُمثّل 4 بتات، فتتسع الدقة الفردية في 8 خانات والمزدوجة في 16. يستعين المهندسون بهذا التمثيل لمقارنة القيم على مستوى البتات، وتحديد أنماط خاصة كاللانهاية وNaN، والتحقق من سلامة التسلسل الثنائي بين المنصات المختلفة.
على سبيل المثال، تُخزَّن قيمة π في الدقة الفردية كـ0x40490FDB وفي المزدوجة كـ0x400921FB54442D18، وتُظهر المقارنة بين النمطين وضوحًا كيف تحمل الدقة المزدوجة قدرًا أكبر بكثير من بتات الكسر. للاستزادة في تحويلات الأنظمة العددية والنظام الست عشري راجع محوّل الأنظمة العددية.
الأسئلة الشائعة (FAQ)
لماذا لا يُخزَّن العدد 0.1 بدقة تامة؟
يُخزّن معيار IEEE 754 الأعداد بالنظام الثنائي، والكسر العشري 0.1 لا ينتهي في الأساس 2، تمامًا كما أن 1/3 لا ينتهي في الأساس 10. نمط البتات المخزَّن هو أقرب قيمة قابلة للتمثيل، وتبلغ في الدقة المزدوجة نحو 0.10000000000000000555. حين يُجمع رقمان مقرَّبان من هذا النوع تتراكم الأخطاء، فتُنتج العملية 0.1 + 0.2 = 0.30000000000000004 بدلًا من 0.3 بالضبط.
يُظهر حقل القيمة المخزّنة المكافئ العشري الدقيق لنمط البتات، مما يتيح رؤية أثر التقريب لأي عدد تُدخله.
متى تُستخدم الدقة الفردية ومتى تُستخدم المزدوجة؟
تُوفّر الدقة المزدوجة (64 بتًا) نحو 15 إلى 17 رقمًا عشريًا معنويًا، وهي الإعداد الافتراضي في معظم لغات البرمجة.
أما الدقة الفردية (32 بتًا) فتُعطي نحو 7 أرقام معنوية، غير أنها تستهلك نصف الذاكرة وتعمل بسرعة أكبر على العتاد المجهَّز بوحدات نقطة عائمة مخصصة بعرض 32 بتًا، وهو الأمر الشائع في معالجة الرسومات وإطارات عمل التعلم الآلي والأنظمة المدمجة حيث تُقدَّم سرعة النقل على دقة الحساب.