ما هو محوّل الأرقام ذات الفاصلة العائمة IEEE 754؟
تقوم هذه الأداة بفكّ تشفير قيمة ست عشرية بطول 32 بت لتُظهر العدد الحقيقي الذي تمثّله وفق معيار الدقة المفردة IEEE 754 — وهو التنسيق المستخدم في النوع float في لغات مثل C وJava وفي معظم العتاد الحديث. أدخِل ثمانية أرقام ست عشرية، وسيقوم الحاسبة بتقسيمها إلى الحقول الثلاثة التي يتكوّن منها العدد العشري العائم: بت إشارة واحد، و8 بتات للأس، و23 بتاً للمانتيسا (الكسر)، ثم يعيد تجميعها في قيمة عشرية.
طريقة الاستخدام
اكتب القيمة المكوّنة من 32 بت بالنظام الست عشري (مثل 40490FDB). البادئة "0x" اختيارية، ويتم تجاهل أي حروف ليست ست عشرية. أما القيم التي تقل عن 8 أرقام فيُضاف إليها أصفار على اليسار. تُظهر النتيجة القيمة العشرية إلى جانب الإشارة المفكوكة، والأس المخزَّن، والأس بعد إزالة الانحياز، والمانتيسا، بحيث يمكنك التحقق من بنية البتات بنفسك.
شرح المعادلة
بالنسبة للأعداد العادية تُحسب القيمة بالصيغة $$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$ والرقم 127 هو انحياز الأس في الدقة المفردة. أما "1 +" فتعبّر عن البت الضمني الرائد الذي تحمله الأعداد الثنائية المُنظَّمة دائماً. وعندما يكون الأس المخزَّن e يساوي 0 يكون العدد دون عادي (subnormal): يختفي البت الضمني الرائد 1 ويُثبَّت الأس عند -126. وعندما يكون e يساوي 255 تكون القيمة لانهاية (مانتيسا صفرية) أو "ليست عدداً" NaN.
مثال محلول
لنأخذ 40490FDB. في النظام الثنائي تكون الإشارة 0 (موجبة)، وحقل الأس 10000000 = 128، إذن الأس بعد إزالة الانحياز هو \(128 - 127 = 1\). وتساوي بتات المانتيسا 4788187، ما يعطي كسراً مقداره \(4788187/8388608 \approx 0.5707964\). وتكون القيمة \((1 + 0.5707964) \times 2^{1} \approx 3.14159274\) — وهي أقرب تقريب بالدقة المفردة للعدد π.
الأسئلة الشائعة
لماذا لا تطابق النتيجة العدد الذي توقّعته بالضبط؟ توفّر الدقة المفردة نحو 7 أرقام عشرية فقط من الدقة، لذا تُقرَّب كثير من القيم العشرية إلى أقرب عدد عائم قابل للتمثيل.
ماذا عن الدقة المزدوجة (64 بت)؟ هذه الأداة تتعامل مع الدقة المفردة بطول 32 بت. أما الأعداد المزدوجة فتستخدم 11 بتاً للأس، ومانتيسا بطول 52 بتاً، وانحيازاً مقداره 1023.
ماذا تعطي القيمة 7FC00000؟ هذه قيمة "ليست عدداً" NaN (الأس كله وحدات والمانتيسا غير صفرية)، وهي ليست عدداً منتهياً.