Stax

محول IEEE 754

تحويل الأرقام العشرية إلى تمثيل الفاصلة العائمة IEEE 754.

0sign
10000000exponent (8 bits)
10010010000111111011011mantissa (23 bits)
Decimal
3.141593
Hex
0x40490FDB
Sign
0 (positive)
Exponent
128 (biased), 1 (actual)

ما هو محول IEEE 754؟

أداة لتحويل بين الأعداد العائمة (decimal) وتمثيلها الثنائي وفق معيار IEEE 754. تدعم 32-bit (float) و 64-bit (double). أساسي لمطوري الأنظمة المضمنة، مهندسي الـ ML، فهم 'why 0.1+0.2 ≠ 0.3'.

هيكل IEEE 754

  1. 32-bit float: 1 إشارة + 8 أس + 23 mantissa
  2. 64-bit double: 1 + 11 + 52
  3. 16-bit half: 1 + 5 + 10 (للML)
  4. Bias: 127 (float)، 1023 (double)
  5. Subnormal numbers للأعداد الصغيرة جداً

قيم خاصة

  • +Infinity (1/0)
  • -Infinity (-1/0)
  • NaN (0/0، sqrt(-1))
  • +0 و -0 (متساويان رياضياً)
  • Subnormals (أصغر من النورمال)

مشاكل شائعة

0.1 + 0.2 = 0.30000000000000004 (binary لا يمثل 0.1 بدقة). مقارنات ==: استخدم Math.abs(a-b) < epsilon. للمالية: استخدم BigDecimal أو أعداد صحيحة (سنتات). NaN ≠ NaN: استخدم isNaN(). تجمع errors في تكرارات طويلة - حل: Kahan summation algorithm.

الأسئلة الشائعة

ما هو IEEE 754؟
معيار عالمي لتمثيل الأرقام العائمة في الكمبيوتر منذ 1985. تنسيقات: 32-bit (float) و 64-bit (double). يقسم إلى: bit إشارة + bits أس + bits mantissa. كل اللغات (C، Java، Python) والمعالجات تستخدمه. أساس الحسابات الحديثة.
لماذا 0.1 + 0.2 ≠ 0.3؟
في binary، 0.1 لا يمكن تمثيله بدقة (مثل 1/3 في decimal = 0.333...). يصبح 0.0001100110011... لانهاية. التقريب يعطي 0.10000000000000000555. النتيجة: 0.30000000000000004. مشكلة شائعة في كل اللغات. حلول: BigDecimal، أرقام صحيحة (سنتات بدلاً من روبيات).
Float vs Double؟
Float (32-bit): دقة 7 أرقام عشرية. مدى ±3.4×10^38. أسرع، أقل ذاكرة. Double (64-bit): دقة 15-17 رقم. مدى ±1.8×10^308. الافتراضي في معظم اللغات (Java، Python). للأنظمة المضمنة، float أكفأ. للمالية والعلوم، double.
هل IEEE 754 له قيم خاصة؟
نعم: +Infinity (1/0)، -Infinity، NaN (Not a Number، نتيجة 0/0)، +0 و -0 (نعم، صفران!). NaN ≠ NaN (شاذ). فحص: isNaN()، isInfinite(). مهم في الحسابات العلمية. للاختبارات، استخدم Math.abs(a-b) < epsilon بدلاً من ==.

أدوات ذات صلة