Skip to content

محوّل الفاصلة العائمة IEEE 754

حوّل الأعداد العشرية إلى تمثيل IEEE 754 الثنائي والسداسي العشري — نصف دقة ومفردة ومزدوجة وbfloat16. اطّلع على القيمة المخزّنة الفعلية وخطأ التقريب وتخطيط البتات. يعمل 100% في متصفحك.

بدون تتبّع يعمل في المتصفّح مجاني
كل شيء يعمل محلياً في متصفحك — القيم التي تكتبها لا تغادر هذا الجهاز أبداً.
الصيغة
قيم خاصة
تخطيط البتات — انقر أي بت لقلبه
الإشارة الأس الجزء العشري
تفصيل الحقول
الإشارة
الأس
الجزء العشري
القيمة المخزّنة وخطأ التقريب
ما أدخلته
المخزّن فعلياً
خطأ التقريب
القيم القابلة للتمثيل المجاورة
السابقة
التالية
ULP (حجم الفجوة)
معلمات صيغ IEEE 754 في لمحة
الصيغة إجمالي البتات الإشارة الأس الجزء العشري الانحياز أكبر قيمة منتهية الأرقام العشرية
binary16 (FP16)1615101565504~3.3
bfloat1616187127≈3.39×10³⁸~2.3
binary32 (FP32)321823127≈3.40×10³⁸~7.2
binary64 (FP64)64111521023≈1.80×10³⁰⁸~15.9
تمت مراجعته للدقّة العددية مقابل تعريفات صيغ IEEE 754-2019؛ وتم التحقق من كل قيمة مثال بحساب أعداد صحيحة كبيرة دقيق — فريق هندسة Go-Tools · Jul 16, 2026

ما هو تمثيل الفاصلة العائمة IEEE 754؟

IEEE 754 هو المعيار الذي يحدّد كيفية تخزين الحواسيب للأعداد الحقيقية بالنظام الثنائي. تُرَصّ كل قيمة في ثلاثة حقول: بت الإشارة، والأس (يُخزَّن مع انحياز ليتمكّن من تمثيل المقادير الكبيرة والصغيرة جداً معاً)، والجزء العشري الذي يحمل الأرقام المعنوية. تستخدمه تقريباً كل المعالجات ووحدات الرسوميات ولغات البرمجة، ولهذا تظهر مفاجآت التقريب نفسها في JavaScript وPython وC وSQL على حدٍّ سواء.

الفكرة الجوهرية أن الفاصلة العائمة الثنائية لا تستطيع تمثيل سوى الأعداد التي على الصورة m × 2ⁿ. الكسور العشرية مثل 0.1 هي كسور دورية لا نهائية في النظام الثنائي — 0.000110011001100… — لذا تخزّن الصيغة أقرب جارٍ قابل للتمثيل بدلاً منها. بالدقة المفردة ذلك الجار هو 0.100000001490116119384765625؛ وبالدقة المزدوجة هو 0.1000000000000000055511151231257827021181583404541015625. لا هذا 0.1 ولا ذاك. وكل غرابة لاحقة — 0.1 + 0.2 ≠ 0.3، مجاميع تنحرف، مقارنات تساوٍ تفشل — تنبع من هذه الحقيقة الواحدة، وهذا المحوّل يجعلها مرئية بطباعة القيمة المخزّنة الدقيقة بدلاً من تقريب مُعاد إليك.

يحجز المعيار أيضاً أنماط بتات للقيم الخاصة. الأس الذي كله آحاد يرمّز ±Infinity (بجزء عشري صفري) أو NaN (بجزء عشري غير صفري)؛ والأس الذي كله أصفار يرمّز الصفر ذا الإشارة (بجزء عشري صفري) أو الأعداد دون الطبيعية (بجزء عشري غير صفري) التي تملأ فجوة الفيض السفلي المجاورة للصفر بدقة منخفضة. الصيغ الأربع التي تغطيها هذه الأداة — binary16/FP16 وbfloat16 وbinary32/FP32 وbinary64/FP64 — لا تختلف إلا في عدد البتات التي تمنحها لكل حقل: بتات أس أكثر تعني مدى أوسع، وبتات جزء عشري أكثر تعني دقة أعلى. أما bfloat16، المفضَّلة في تعلّم الآلة، فهي ببساطة FP32 بعد قصّ الـ16 بتاً السفلى من جزئها العشري: نفس المدى بدقة أخشن بكثير.

نموذج ذهني مفيد: الأعداد العائمة القابلة للتمثيل تشكّل شبكة على خط الأعداد يتضاعف تباعدها — وحدة واحدة في الخانة الأخيرة، أو ULP — عند كل قوة للعدد 2. قرب 1.0 يبلغ تباعد شبكة الدقة المزدوجة نحو 2.22 × 10⁻¹⁶؛ وقرب 2⁵³ يصبح التباعد عدداً صحيحاً كاملاً، ولهذا لا تستطيع أعداد الدقة المزدوجة العدّ بعد 2⁵³ بشكل موثوق. تعرض لوحة الجيران في هذه الأداة تلك الشبكة مباشرة: القيمتين السابقة والتالية القابلتين للتمثيل حول أي شيء تكتبه، مع الفجوة الدقيقة بينهما.

// Float ↔ hex through the raw IEEE 754 bits (works in any browser / Node.js)
const buf = new DataView(new ArrayBuffer(8));

function floatToHex32(value) {
  buf.setFloat32(0, value); // rounds to nearest even
  return '0x' + buf.getUint32(0).toString(16).toUpperCase().padStart(8, '0');
}

function hexToFloat32(hex) {
  buf.setUint32(0, parseInt(hex, 16));
  return buf.getFloat32(0);
}

floatToHex32(0.1);        // '0x3DCCCCCD'
floatToHex32(3.14159);    // '0x40490FD0'
hexToFloat32('3DCCCCCD'); // 0.10000000149011612

الميزات الرئيسية

أربع صيغ في عرض واحد

نصف الدقة (FP16) وbfloat16 والدقة المفردة (FP32) والدقة المزدوجة (FP64) — بدّل بنقرة واحدة فتُعاد حسابات الصفحة كلها، فلا تستغرق مقارنة الكيفية التي يستقر بها العدد نفسه في كل صيغة سوى ثوانٍ.

شبكة بتات قابلة للنقر

كل بت زر. اقلب الإشارة، أو حرّك الأس، أو المس بتاً في الجزء العشري وشاهد العروض العشرية والسداسية العشرية والثنائية تُحدَّث فوراً — أسرع طريقة لبناء حدس للترميز.

القيمة المخزّنة الدقيقة لا تقريبها

تحسب الأداة المفكوك العشري الكامل للبتات المخزّنة بحساب أعداد صحيحة كبيرة دقيق — كل الأرقام الـ55 لقيمة 0.1 بالدقة المزدوجة — إضافة إلى خطأ التقريب المُوقَّع الدقيق مقارنة بما كتبته.

الجيران وULP

اطّلع على القيمتين السابقة والتالية القابلتين للتمثيل حول العدد الحالي والفجوة الدقيقة (ULP) بينهما — تباعد الشبكة الذي يحدّد مقدار الدقة المتاحة لك فعلاً عند أي مقدار.

القيم الخاصة على بُعد نقرة

تحمّل الشرائح ±0 و±Infinity وNaN وأصغر عدد دون طبيعي وأكبر قيمة منتهية للصيغة المحدّدة، مع شارة تصنيف تسمّي ما يرمّزه نمط البتات الحالي.

روابط دائمة قابلة للمشاركة، دون أي رفع

«نسخ الرابط» يرمّز الصيغة ونمط البتات الدقيق في عنوان URL — مثالي لتقارير الأخطاء ومراجعات الكود والتدريس. كل شيء يعمل محلياً في متصفحك؛ لا شيء تكتبه يغادر الصفحة.

أمثلة تحويل IEEE 754

‏0.1 بالدقة المفردة — خطأ التقريب الكلاسيكي

0.1
0x3DCCCCCD — تُخزَّن فعلياً كـ 0.100000001490116119384765625

لا يملك العدد العشري 0.1 تمثيلاً ثنائياً منتهياً، لذا يخزّن IEEE 754 أقرب قيمة قابلة للتمثيل بدلاً منه. بالدقة المفردة (FP32) تلك القيمة هي 0x3DCCCCCD، وهي بالضبط 0.100000001490116119384765625 — أي أكبر من المطلوب بنحو 1.49 × 10⁻⁹. تعرض الأداة هذه القيمة المخزّنة الدقيقة والخطأ الدقيق، رقماً رقماً، بدلاً من «0.1» المقرَّبة التي تعيد لغة البرمجة طباعتها لك. هذا المثال الواحد يفسّر معظم مفاجآت الفاصلة العائمة، بما في ذلك سبب كون 0.1 + 0.2 لا يساوي 0.3.

من عدد عائم إلى سداسي عشري: ‏3.14159 بصيغة FP32

3.14159
0x40490FD0

اكتب 3.14159 مع تحديد الدقة المفردة (FP32) فيعرض الحقل السداسي العشري 0x40490FD0 — الإشارة 0، والأس المنحاز 128 (أي 2¹)، والجزء العشري 0x490FD0. القيمة المخزّنة فعلياً هي 3.141590118408203125، أي أعلى بقليل ممّا كتبته. الصيغة السداسية العشرية هي ما تراه في التقاطات الشبكة وذواكر GPU وعروض السجلّات والملفات الثنائية المتسلسلة، والتحويل يعمل في الاتجاهين: الصق 40490FD0 في الحقل السداسي العشري لفك ترميزه من جديد.

الحد الأقصى لـFP16: عند 65504 تنتهي نصف الدقة

65504
0x7BFF — أكبر قيمة FP16 منتهية

لا تملك نصف الدقة سوى 5 بتات للأس و10 بتات للجزء العشري، لذا فإن أكبر قيمة منتهية لديها هي 65504 (0x7BFF). اكتب 65520 أو أي قيمة أكبر وسيُقرَّب الناتج إلى Infinity ‏(0x7C00) — وهذا خطر حقيقي عند تكميم نماذج تعلّم الآلة إلى FP16. بدّل إلى bfloat16 وستجد أن 65520 نفسها تتّسع بسهولة، لأن bfloat16 يحتفظ ببتات الأس الثماني الخاصة بـFP32 (المدى) بينما يتخلّى عن بتات الجزء العشري (الدقة). هذه المقايضة هي بالضبط سبب تفضيل تدريب تعلّم الآلة لـbfloat16 وتفضيل التخزين المضغوط لـFP16.

‏−0 و+0: نمطا بتات مختلفان وقيمة واحدة

-0
0x80000000 (FP32)، بينما +0 هي 0x00000000

لدى IEEE 754 صفر ذو إشارة: −0 يضبط بت الإشارة فقط (0x80000000 في FP32)، بينما +0 كله أصفار. يتساوى الاثنان عند المقارنة في كل لغة برمجة، ومع ذلك فإن قسمة 1 على −0 تعطي −Infinity وقسمة 1 على +0 تعطي +Infinity، فالفرق بينهما قابل للرصد. انقر بت الإشارة في الأداة للتبديل بينهما وشاهد شارة التصنيف تبقى على «صفر» بينما تتغيّر القيمة السداسية العشرية — توضيح بنقرة واحدة لسبب اختلاف التساوي على مستوى البتات عن التساوي العددي.

كيف تحوّل أعداد الفاصلة العائمة IEEE 754

  1. 1

    اختر صيغة الفاصلة العائمة

    الدقة المفردة (FP32) محدّدة مسبقاً. بدّل إلى الدقة المزدوجة (FP64) للأعداد على طريقة JavaScript وPython، أو إلى نصف الدقة (FP16) وbfloat16 لصيغ الـ16 بت المستخدمة في تعلّم الآلة والرسوميات.

  2. 2

    اكتب عدداً عشرياً

    أدخل أي قيمة — 0.1 أو -2.5e3 أو 65504 — أو استخدم شرائح القيم الخاصة لـ±0 و±Infinity وNaN وأصغر عدد دون طبيعي وأكبر قيمة منتهية. يحدث التحويل أثناء الكتابة.

  3. 3

    اقرأ تخطيط البتات الملوّن

    بت الإشارة وحقل الأس والجزء العشري مميّزة بألوان مختلفة، مع جدول تفصيل الحقول الذي يعرض البتات الخام وحساب الانحياز والبت الضمني البادئ.

  4. 4

    افحص القيمة المخزّنة الدقيقة والخطأ

    تطبع لوحة الدقة القيمة المخزّنة فعلياً — كل رقم، محسوباً بدقة تامة — إلى جانب خطأ التقريب مقارنة بما كتبته، إضافة إلى الجارين السابق والتالي القابلين للتمثيل وفجوة ULP.

  5. 5

    اقلب البتات والصق السداسي العشري وانسخ النتائج

    انقر أي بت لقلبه، أو الصق قيماً سداسية عشرية (3DCCCCCD) وسلاسل ثنائية لفك ترميزها إلى النظام العشري. انسخ القيمة السداسية العشرية أو الثنائية أو القيمة الدقيقة أو رابطاً قابلاً للمشاركة يعيد إنتاج نمط البتات بالضبط.

أخطاء شائعة في الفاصلة العائمة

الوثوق بالقيمة المطبوعة بدل القيمة المخزّنة

تطبع اللغات الأعداد العائمة مقرَّبة إلى أقصر سلسلة تعيد إنتاج البتات نفسها، فيبدو 0.1 نظيفاً بينما القيمة المخزّنة ليست كذلك. احكم على الدقة من المفكوك الدقيق، لا ممّا تعرضه print().

✗ خطأ
print(0.1)  # 0.1 — looks exact, is not
✓ صحيح
0.1 stored (FP64) = 0.1000000000000000055511151231257827021181583404541015625

مقارنة الأعداد العائمة بالتساوي التام

يحطّ 0.1 + 0.2 على نمط البتات 0x3FD3333333333334 بينما القيمة الحرفية 0.3 هي 0x3FD3333333333333 — بينهما ULP واحد، لذا فإن == خاطئة رغم أن كليهما يُطبَع كقيمة قريبة من 0.3.

✗ خطأ
if (0.1 + 0.2 === 0.3) { … }   // never runs
✓ صحيح
if (Math.abs(a - b) < 1e-9) { … }   // tolerance sized to your data

التكميم إلى FP16 دون فحص المدى

أكبر قيمة منتهية في FP16 هي 65504. أي شيء أكبر يصبح Infinity، ومتى دخلت Infinity في حساب فإنها تنتشر فيه. افحص قيمك القصوى قبل التحويل نزولاً — أو استخدم bfloat16 الذي يحتفظ بمدى FP32.

✗ خطأ
fp16(65520)   → Infinity (0x7C00) — silent overflow
✓ صحيح
bf16(65520)   → finite (bfloat16 keeps 8 exponent bits)

اختبار NaN بالتساوي

NaN هي القيمة الوحيدة التي لا تساوي نفسها — وهذا مقصود بالتصميم، حتى لا يتنكّر حسابٌ فاشل في هيئة عدد حقيقي. استخدم فحص isNaN الخاص بلغتك بدلاً من ==، وتذكّر أن هناك ملايين أنماط بتات NaN المتمايزة.

✗ خطأ
if (x === NaN) { … }        // always false, even when x IS NaN
✓ صحيح
if (Number.isNaN(x)) { … }  // the correct test

ماذا يمكنك أن تفعل بمحوّل IEEE 754

تصحيح البيانات الثنائية المتسلسلة
الصق القيمة السداسية العشرية التي وجدتها في التقاط شبكة أو ذاكرة GPU أو تفريغ سجلّات أو صيغة ملف وفكّ ترميزها إلى القيمة العشرية الدقيقة — أو اذهب في الاتجاه المعاكس لكتابة بيانات اختبار. ملاحظة عن ترتيب البايتات: القيمة السداسية العشرية المعروضة هي نمط البتات بالترتيب الأكبر أولاً (big-endian)؛ إذا كان التفريغ لديك بالترتيب الأصغر أولاً (little-endian)، فاعكس ترتيب البايتات قبل اللصق.
فهم تكميم نماذج تعلّم الآلة
تحقّق ممّا إذا كانت قيمك تنجو من سقف FP16 البالغ 65504، وقارن فقدان الدقة بين FP16 وbfloat16 رقماً رقماً، وافحص مدى الأعداد دون الطبيعية حيث تنهار التدرّجات في الفيض السفلي.
تفسير علّة في الفاصلة العائمة
عندما يسألك زميل لماذا يختلف عددان «متساويان»، أرسل رابطاً دائماً يعرض نمطي البتات والقيمتين المخزّنتين الدقيقتين — فيُحسَم النقاش من تلقاء نفسه. واستعن بـأداة مقارنة النصوص للمخرجات الأطول.
تعلّم الترميز أو تدريسه
تصبح مقررات معمارية الحواسيب ملموسة عندما يستطيع الطلاب النقر على بتات الأس ومشاهدة حساب الانحياز يتغيّر. جدول تفصيل الحقول يحاكي الطريقة التي ترسم بها الكتب الدراسية الصيغة.
فك ترميز سجلّات الأنظمة المدمجة والصناعية
تحمل حمولات Modbus وCAN والمستشعرات قيم FP32 ككلمات سداسية عشرية خام بشكل روتيني. الصق الكلمة هنا لقراءة القيمة الفيزيائية دون كتابة سكربت مؤقت.

صيغ IEEE 754 والقيم الخاصة

الصيغ الثنائية الأربع في لمحة
binary16 ‏(FP16): بت إشارة + 5 بتات أس + 10 بتات جزء عشري، انحياز 15، الحد الأقصى 65504، نحو 3.3 أرقام عشرية. ‏bfloat16: ‏1 + 8 + 7، انحياز 127، الحد الأقصى ≈ 3.39 × 10³⁸، نحو 2.3 رقماً. ‏binary32 ‏(FP32): ‏1 + 8 + 23، انحياز 127، الحد الأقصى ≈ 3.40 × 10³⁸، نحو 7.2 أرقام. ‏binary64 ‏(FP64): ‏1 + 11 + 52، انحياز 1023، الحد الأقصى ≈ 1.80 × 10³⁰⁸، نحو 15.9 رقماً. النمط: بتات الأس تشتري المدى، وبتات الجزء العشري تشتري الدقة، وbfloat16 يقايض عمداً كل دقته مقابل مدى FP32.
كيف تُركَّب القيمة
يُفكّ ترميز العدد الطبيعي وفق (−1)^sign × 1.mantissa × 2^(exponent − bias). الواحد البادئ ضمني — لا يُخزَّن، ولهذا يمنح حقل جزء عشري من 23 بتاً دقةً من 24 بتاً. الأس المخزَّن هو الأس الحقيقي زائد الانحياز (127 في FP32)، لذا يُخزَّن 2⁰ كـ 01111111. جدول تفصيل الحقول في هذه الأداة يعرض كل خطوة من ذلك الحساب للقيمة الحالية.
القيم الخاصة: أنماط الأس المحجوزة
الأس الذي كله آحاد مع جزء عشري صفري هو ±Infinity؛ ومع أي جزء عشري غير صفري هو NaN ‏(قيمة NaN الهادئة القياسية تضبط البت الأعلى في الجزء العشري). والأس الذي كله أصفار مع جزء عشري صفري هو ±0؛ ومع جزء عشري غير صفري هو عدد دون طبيعي، يُفكّ وفق 0.mantissa × 2^(1 − bias) — دون واحد بادئ ضمني. هذه القواعد متطابقة عبر الصيغ الأربع كلها، ولهذا تعمل الشرائح نفسها في كل منها.
التقريب: إلى الأقرب مع كسر التعادل نحو الزوجي
عندما تقع قيمة بين عددين قابلين للتمثيل، يقرّبها الوضع الافتراضي في IEEE 754 إلى الأقرب منهما؛ وعند التعادل التام يختار العدد الذي بته الأخير في الجزء العشري 0 (التعادل نحو الزوجي)، ما يمنع الانحراف المنهجي. يطبّق هذا المحوّل تلك القاعدة بالضبط عند تضييق مدخلك العشري إلى الصيغة الهدف، وتعرض لوحة الخطأ الفرق المُوقَّع الناتج بدقة.
ULP: تباعد شبكة الأعداد العائمة
الأعداد العائمة القابلة للتمثيل ليست موزّعة بانتظام — الفجوة بين الجارين (وحدة واحدة في الخانة الأخيرة) تتضاعف عند كل قوة للعدد 2. قرب 1.0 يبلغ ULP للدقة المزدوجة 2⁻⁵² ≈ 2.22 × 10⁻¹⁶؛ وقرب 2⁵³ يصل ULP إلى 1.0 وتبدأ الأعداد الصحيحة بالتخطّي. تطبع لوحة الجيران قيمة ULP الحالية بدقة، وهي الإجابة الصادقة عن سؤال «ما مقدار دقة عددي هنا؟».

أفضل ممارسات الفاصلة العائمة

لا تقارن الأعداد العائمة بـ== أبداً
بعد أي عملية حسابية، يمكن لتعبيرين متساويين رياضياً أن يبتعدا ULP واحداً. قارن مقابل سماحية مناسبة لمقاديرك — أو عُدّ وحدات ULP بين نمطي البتات، وهو ما تتيح لك هذه الأداة فحصه مباشرة.
أبعد النقود عن الأعداد العائمة الثنائية
لا تحتوي أي شبكة قوى للعدد 2 على 0.10 بالضبط، لذا تراكم العملاتُ المخزّنة في أعداد عائمة أخطاءً مرئية. استخدم أعداداً صحيحة بالسنتات أو نوعاً عشرياً؛ ولوحة القيمة المخزّنة الدقيقة هنا هي البرهان الدائم على السبب.
اختر صيغة الـ16 بت حسب المدى لا العادة
إذا كان بوسع قيمك تجاوز 65504 — خسائر، تدرّجات، قفزات فيزيائية — فسيفيض FP16 إلى Infinity حيث يواصل bfloat16 الإبحار. أما إذا كان كل شيء مطبَّعاً في نطاق ضيّق، فبتات الجزء العشري الإضافية في FP16 تعطي دقة أفضل بوضوح.
احذر فخ التقريب المزدوج عند التضييق
قد يحطّ تحويل عشري ← مزدوج ← نصف على بُعد ULP واحد من تحويل عشري ← نصف مباشرةً في حالات منتصف المسافة النادرة. تقرّب هذه الأداة مدخلك العشري إلى الصيغة الهدف في خطوة واحدة، فما تراه هو إجابة IEEE 754 الصادقة.
توقّع انكسار الأعداد الصحيحة فوق 2⁵³
يخزّن عدد الدقة المزدوجة كل عدد صحيح حتى 2⁵³ بالضبط، ثم يبدأ بالتخطّي — 2⁵³ + 1 غير قابل للتمثيل. إذا كنت تتعامل مع معرّفات أو عدّادات قرب هذا الحجم، فاستخدم أعداداً صحيحة من 64 بت أو سلاسل نصية، وافحص القيم المريبة هنا على مستوى البتات.

أسئلة شائعة عن محوّل IEEE 754

لماذا لا يساوي 0.1 + 0.2 القيمة 0.3؟
لأن أياً من الأعداد الثلاثة لا وجود له في النظام الثنائي للفاصلة العائمة. يخزّن نوع الدقة المزدوجة 0.1 بالضبط كـ 0.1000000000000000055511151231257827021181583404541015625 ويخزّن 0.2 بزيادة ضئيلة مماثلة؛ وجمعهما يعطي 0.3000000000000000444089209850062616169452667236328125 (البتات 0x3FD3333333333334)، بينما تُقرَّب القيمة الحرفية 0.3 إلى 0.299999999999999988897769753748434595763683319091796875 (البتات 0x3FD3333333333333). يقع المجموع خطوة واحدة قابلة للتمثيل فوق القيمة الحرفية — نمطا بتات مختلفان — لذا فإن 0.1 + 0.2 == 0.3 خاطئة في كل لغة تعتمد IEEE 754: ‏JavaScript وPython وJava وC وRust وGo. اكتب 0.1 في هذا المحوّل واقرأ القيمة المخزّنة الدقيقة لترى السبب الجذري بعينيك.
ما هو IEEE 754؟
IEEE 754 هو المعيار التقني لحساب الفاصلة العائمة الثنائية الذي تستخدمه تقريباً كل المعالجات CPU ووحدات GPU ولغات البرمجة الحديثة. يحدّد كيفية رصّ العدد في بتات — بت إشارة واحد، وحقل أس، وجزء عشري (significand) — إضافة إلى قواعد التقريب والقيم الخاصة Infinity وNaN والصفر ذي الإشارة والأعداد دون الطبيعية. الصيغ التي ستقابلها عملياً هي binary32 ‏(float، أي FP32) وbinary64 ‏(double، أي FP64) وbinary16 ‏(half، أي FP16) وصيغة bfloat16 المشتقة منها والمستخدمة في تعلّم الآلة. يعرض هذا المحوّل الصيغ الأربع كلها على مستوى البتات.
ما الفرق بين FP16 وbfloat16؟
كلاهما صيغة من 16 بت، لكنهما يقسمان بتاتهما بشكل مختلف. تستخدم FP16 ‏(IEEE binary16) 5 بتات للأس و10 بتات للجزء العشري: دقة أعلى، لكن بمدى ضيّق جداً — أكبر قيمة منتهية هي 65504، لذا فإن الفيض إلى Infinity خطر دائم. أما bfloat16 فيحتفظ ببتات الأس الثماني الخاصة بـFP32 وبسبع بتات فقط للجزء العشري: كامل مدى العدد العائم ±3.4 × 10³⁸، مع دقة أخشن بكثير. لهذا اعتمد تدريبُ تعلّم الآلة، حيث قد تقفز التدرّجات إلى ما هو أبعد بكثير من 65504، على bfloat16، بينما تناسب FP16 التخزين والاستدلال حيث تكون القيم مضبوطة. قارنهما هنا: اكتب 0.1 وبدّل بين الصيغتين — تخزّن FP16 القيمة 0.0999755859375 ‏(0x2E66)، ويخزّن bfloat16 القيمة 0.10009765625 ‏(0x3DCD).
ما هي الأعداد دون الطبيعية (denormal
عندما يكون حقل الأس كله أصفاراً، يتخلّى IEEE 754 عن الواحد الضمني البادئ ويسمح للجزء العشري بالتقلّص تدريجياً نحو الصفر — هذه هي الأعداد دون الطبيعية (المصطلح الأقدم: denormal). تملأ هذه الأعداد الفجوة بين الصفر وأصغر عدد طبيعي، بحيث لا يمكن أبداً أن يُقرَّب فرقُ عددين عائمين غير متساويين إلى الصفر (الفيض السفلي التدريجي). الثمن هو دقة منخفضة، وحساب أبطأ على كثير من المعالجات. في FP16 أصغر عدد دون طبيعي هو 2⁻²⁴ = 0.000000059604644775390625؛ انقر شريحة «أصغر دون طبيعي» في أي صيغة لفحص نمط بتاتها — بتات الأس كلها أصفار والجزء العشري 0…001.
هل أستخدم float أم double؟
اجعل double ‏(FP64) خيارك الافتراضي ما لم يكن لديك سبب مقيس لغير ذلك. يحمل double نحو 15–16 رقماً عشرياً معنوياً مقابل نحو 7 أرقام لـfloat، ومعظم اللغات (أعداد JavaScript وأعداد Python العائمة) لا تتعامل إلا مع double أصلاً. اختر float ‏(FP32) عندما يهيمن عرض نطاق الذاكرة أو التخزين — مصفوفات ضخمة، خطوط GPU، رسوميات — وبعد أن تتأكد أن 7 أرقام تكفي. أما للنقود فاستخدم أعداداً صحيحة (بالسنتات) أو نوعاً عشرياً بدلاً من ذلك: لا توجد صيغة ثنائية تخزّن 0.1 بالضبط، كما تُثبت لوحة القيمة المخزّنة في هذه الأداة. وإذا احتجت لفحص الأنظمة العددية الصحيحة، فجرّب محوّل الأنظمة العددية.
كيف أحوّل عدداً عائماً إلى سداسي عشري يدوياً؟
خذ الإشارة (0 للموجب، 1 للسالب). اكتب القيمة المطلقة بالنظام الثنائي وطبّعها إلى الصورة 1.xxx × 2ⁿ. أضف انحياز الصيغة إلى n (وهو 127 لـFP32 و1023 لـFP64) واكتب الناتج في بتات الأس. احذف الواحد البادئ واحتفظ بالبتات الـ23 (أو الـ52) التالية من الكسر كجزء عشري، مع التقريب إلى أقرب زوجي عند القطع. اربط الإشارة فالأس فالجزء العشري وجمّع كل 4 بتات في خانة سداسية عشرية واحدة. لعدد 3.14159 في FP32 يعطي ذلك 0 | 10000000 | 10010010000111111010000، أي 0x40490FD0 — أو تجاوز هذا الحساب كله ودَع هذا المحوّل يؤدي كل خطوة أمام عينيك.
هل تُرفَع بياناتي عند استخدام هذا المحوّل؟
لا. كل تحويل يعمل محلياً في متصفحك باستخدام JavaScript خالص — حساب DataView وBigInt، دون أي رحلة إلى خادم ودون مكتبات طرف ثالث. يمكنك فتح أدوات المطوّر في متصفحك ومراقبة لوحة الشبكة وهي صامتة أثناء كتابتك، أو قطع الاتصال بالإنترنت كلياً ومواصلة التحويل. زر «نسخ الرابط» يرمّز نمط البتات في جزء العنوان (URL fragment) الذي لا يُرسَل هو الآخر إلى أي خادم أبداً.

أدوات ذات صلة

عرض جميع الأدوات →

محوّل الأنظمة العددية — ثنائي وست عشري وعشري وثماني

أدوات التحويل

حوّل بين الأنظمة الثنائية والست عشرية والعشرية والثمانية وأي أساس من 2 إلى 36 فوراً — أداة مجانية أونلاين تعمل في متصفّحك. جرّبها الآن.

محوّل ألوان HEX/RGB/OKLCH

أدوات التحويل

حوّل ألوان HEX إلى RGB و HSL و OKLCH و OKLAB و CMYK داخل متصفحك — انسخ أي صيغة بنقرة واحدة. مجاني، بلا تسجيل، ألوانك لا تغادر الصفحة أبداً.

محوّل HEX إلى CMYK

أدوات التحويل

حوّل ألوان HEX إلى CMYK في المتصفح. تقريب ساذج قائم على sRGB لمعاينات الطباعة. مجاني، بلا تسجيل، ألوانك تبقى محلياً.

محوّل HEX إلى HSL

أدوات التحويل

حوّل أي لون HEX إلى HSL في المتصفح — يدعم 3 و6 و8 أرقام مع alpha. مجاني، فوري، بلا تسجيل، ألوانك لا تغادر الصفحة أبداً.

محوّل HEX إلى OKLCH

أدوات التحويل

حوّل HEX إلى OKLCH لرموز تصميم Tailwind v4. إخراج موحّد إدراكياً حيّ مع تنبيهات نطاق Display P3. مجاني، في المتصفح فقط.

محوّل HEX إلى RGB

أدوات التحويل

حوّل أي رمز لون HEX إلى RGB في المتصفح — يدعم HEX من 3 و6 و8 أرقام مع alpha. مجاني، فوري، بلا تسجيل، ألوانك لا تغادر الصفحة أبداً.