تنسيق الفاصلة العائمة أحادي الدقة

تنسيق الفاصلة العائمة أحادي الدقة (يسمى أحيانًا FP32 أو float32 أو float ) هو تنسيق رقمي للحاسوب ، يشغل عادةً 32 بت في ذاكرة الحاسوب ؛ وهو يمثل نطاقًا واسعًا من القيم العددية باستخدام فاصلة عائمة .

يمكن لمتغير الفاصلة العائمة تمثيل نطاق أوسع من الأرقام مقارنةً بمتغير الفاصلة الثابتة ذي نفس عرض البت، ولكن على حساب الدقة. يبلغ الحد الأقصى لقيمة متغير عدد صحيح مُوَقَّع ذي 32 بت 2,147,483,647، بينما يبلغ الحد الأقصى لقيمة متغير الفاصلة العائمة ذي الأساس 2 ذي 32 بت وفقًا لمعيار IEEE 754 (2 - 2 - 23 ) × 2^ 127 ≈ 3.4028235 × 10^ 38 . يمكن تحويل جميع الأعداد الصحيحة التي تحتوي على سبعة أرقام عشرية أو أقل، وأي عدد صحيح 2^ n حيث −149 ≤ n ≤ 127، بدقة إلى قيمة فاصلة عائمة أحادية الدقة وفقًا لمعيار IEEE 754.

في معيار IEEE 754 ، يُشار رسميًا إلى تنسيق الأساس 2 ذي 32 بت باسم binary32 ؛ وكان يُسمى single في معيار IEEE 754-1985 . ويحدد معيار IEEE 754 أنواعًا إضافية للأعداد العشرية، مثل الدقة المزدوجة ذات الأساس 2 ذات 64 بت ، ومؤخرًا، تمثيلات الأساس 10.

كانت لغة فورتران من أوائل لغات البرمجة التي وفرت أنواع بيانات الفاصلة العائمة أحادية وثنائية الدقة . قبل اعتماد معيار IEEE 754-1985 على نطاق واسع، كان تمثيل وخصائص أنواع بيانات الفاصلة العائمة يعتمد على الشركة المصنعة للحاسوب ونوعه، وعلى قرارات مصممي لغات البرمجة. على سبيل المثال، كان نوع بيانات الفاصلة العائمة أحادي الدقة في لغة GW-BASIC هو تنسيق MBF ذو 32 بت .

يُطلق على الدقة المفردة اسم SINGLE-FLOAT في لغة Common Lisp ؛ [ 1 ] بينما يُطلق على الدقة المفردة في لغة PL/I اسم float binary(p) حيث p 21، و float decimal(p) حيث تعتمد القيمة القصوى لـ p على ما إذا كانت سمة DFP (IEEE 754 DFP) مُطبقة؛ وفي لغة C مع دعم IEEE 754، ولغة C++ (إذا كانت مكتوبة بلغة C)، ولغة C# ، ولغة Java ؛ [ 2 ] وفي لغة Haskell [ 3 ] ولغة Swift ؛ [ 4 ] بينما يُطلق على الدقة المفردة في لغات Object Pascal ( Delphi )، و Visual Basic ، و MATLAB . مع ذلك، فإن مصطلح float في لغات Python و Ruby و PHP و OCaml ، ومصطلح single في إصدارات Octave قبل 3.2، يشيران إلى أعداد ذات دقة مزدوجة . في معظم تطبيقات PostScript ، وبعض الأنظمة المُدمجة ، الدقة الوحيدة المدعومة هي الدقة المفردة.

معيار IEEE 754: ثنائي 32

يحدد معيار IEEE 754 أن الرقم الثنائي 32 يحتوي على ما يلي:

يُتيح هذا دقة تتراوح بين 6 و9 أرقام عشرية معنوية . إذا تم تحويل سلسلة عشرية تحتوي على 6 أرقام معنوية على الأكثر إلى تنسيق IEEE 754 أحادي الدقة، مما يُعطي رقمًا عاديًا ، ثم تم تحويلها مرة أخرى إلى سلسلة عشرية بنفس عدد الأرقام، فيجب أن تتطابق النتيجة النهائية مع السلسلة الأصلية. إذا تم تحويل رقم IEEE 754 أحادي الدقة إلى سلسلة عشرية تحتوي على 9 أرقام معنوية على الأقل، ثم تم تحويله مرة أخرى إلى تمثيل أحادي الدقة، فيجب أن تتطابق النتيجة النهائية مع الرقم الأصلي. [ 5 ]

تحدد بتة الإشارة إشارة العدد، وهي إشارة الجزء الكسري أيضًا. يشير الرقم "1" إلى السالب. حقل الأس هو عدد صحيح غير مُوَقَّع مكون من 8 بتات، يتراوح من 0 إلى 255، بصيغة مُحَوَّلة : القيمة 127 تُمثِّل الأس صفرًا. تتراوح الأسس من -126 إلى +127 (أي من 1 إلى 254 في حقل الأس)، لأن قيم الأس المُحَوَّلة 0 (جميعها أصفار) و255 (جميعها آحاد) محجوزة لأعداد خاصة ( أعداد دون المستوى الطبيعي ، وأصفار مُوَقَّعة ، ولا نهائية ، وقيم NaN ).

يتضمن الجزء الكسري الحقيقي للأعداد العادية 23 بتًا كسريًا على يمين الفاصلة الثنائية وبتًا ضمنيًا في المقدمة (على يسار الفاصلة الثنائية) قيمته 1. أما الأعداد غير العادية والأصفار (وهي أعداد الفاصلة العائمة الأصغر قيمةً من أصغر عدد موجب عادي) فتُمثَّل بقيمة أسية منحازة تساوي 0، مما يجعل قيمة البت الضمني في المقدمة تساوي 0. وبالتالي، يظهر 23 بتًا كسريًا فقط من الجزء الكسري في تنسيق الذاكرة، لكن الدقة الإجمالية تبلغ 24 بتًا (أي ما يعادل log 10 (2 24 ) ≈ 7.225 رقمًا عشريًا) للقيم العادية؛ أما الأعداد غير العادية فتتضاءل دقتها تدريجيًا لتصل إلى بت واحد لأصغر قيمة غير صفرية.

تم ترتيب الأجزاء على النحو التالي:

القيمة الحقيقية التي تأخذها بيانات ثنائية 32 بت معينة بإشارة معينة ، وأس منحاز E (عدد صحيح غير مُوقّع 8 بت)، وكسر 23 بت هي

(-1)ب31×2(ب30ب29...ب23)2-127×(1.ب22ب21...ب0)2{\displaystyle (-1)^{b_{31}}\times 2^{(b_{30}b_{29}\dots b_{23})_{2}-127}\times (1.b_{22}b_{21}\dots b_{0})_{2}}،

مما ينتج عنه

قيمة=(-1)لافتة×2(هـ-127)×(1+أنا=123ب23-أنا2-أنا).{\displaystyle {\text{value}}=(-1)^{\text{sign}}\times 2^{(E-127)}\times \left(1+\sum _{i=1}^{23}b_{23-i}2^{-i}\right).}

في هذا المثال:

  • لافتة=ب31=0{\displaystyle {\text{sign}}=b_{31}=0}،
  • (-1)لافتة=(-1)0=+1{-1،+1}{\displaystyle (-1)^{\text{sign}}=(-1)^{0}=+1\in \{-1,+1\}}،
  • هـ=(ب30ب29...ب23)2=أنا=07ب23+أنا2+أنا=124{1،...،(28-1)-1}={1،...،254}{\displaystyle E=(b_{30}b_{29}\dots b_{23})_{2}=\sum _{i=0}^{7}b_{23+i}2^{+i}=124\in \{1,\ldots ,(2^{8}-1)-1\}=\{1,\ldots ,254\}}،
  • 2(هـ-127)=2124-127=2-3{2-126،...،2127}{\displaystyle 2^{(E-127)}=2^{124-127}=2^{-3}\in \{2^{-126},\ldots ,2^{127}\}}،
  • 1.ب22ب21...ب0=1+أنا=123ب23-أنا2-أنا=1+12-2=1.25{1،1+2-23،...،2-2-23}[1؛2-2-23][1؛2){\displaystyle 1.b_{22}b_{21}...b_{0}=1+\sum _{i=1}^{23}b_{23-i}2^{-i}=1+1\cdot 2^{-2}=1.25\in \{1,1+2^{-23},\ldots ,2-2^{-23}\}\subset [1;2-2^{-23}]\subset [1;2)}.

هكذا:

  • قيمة=(+1)×2-3×1.25=+0.15625{\displaystyle {\text{value}}=(+1)\times 2^{-3}\times 1.25=+0.15625}.

ملحوظة:

  • 1+2-231.000٠٠٠119{\displaystyle 1+2^{-23}\approx 1.000\,000\,119}،
  • 2-2-231.999999881{\displaystyle 2-2^{-23}\approx 1.999\,999\,881}،
  • 2-1261.17549435×10-38{\displaystyle 2^{-126}\approx 1.175\,494\,35\times 10^{-38}}،
  • 2+1271.70141183×10+38{\displaystyle 2^{+127}\approx 1.701\,411\,83\times 10^{+38}}.

ترميز الأس

يتم ترميز الأس الثنائي ذي الدقة المفردة باستخدام تمثيل ثنائي الإزاحة ، حيث تكون الإزاحة الصفرية 127؛ والمعروف أيضًا باسم انحياز الأس في معيار IEEE 754.

وبالتالي، من أجل الحصول على الأس الحقيقي كما هو محدد بواسطة التمثيل الثنائي للإزاحة، يجب طرح الإزاحة 127 من الأس المخزن.

يتم تفسير الأسس المخزنة 00 H و FF H بشكل خاص.

الأسالكسر = 0الكسر ≠ 0معادلة
00 H = 00000000 2±صفرعدد دون المستوى الطبيعي(-1)لافتة×2-126×0.جزء{\displaystyle (-1)^{\text{sign}}\times 2^{-126}\times 0.{\text{fraction}}}
01 H ، ...، FE H = 00000001 2 ، ...، 11111110 2القيمة الطبيعية(-1)لافتة×2الأس-127×1.جزء{\displaystyle (-1)^{\text{sign}}\times 2^{{\text{exponent}}-127}\times 1.{\text{fraction}}}
FF H = 11111111 2± ما لا نهايةNaN (هادئ، إشارة)

أقل قيمة طبيعية موجبة هي2-1261.18×10-38{\displaystyle 2^{-126}\approx 1.18\times 10^{-38}}والقيمة الموجبة الدنيا (الدون الطبيعية) هي2-1491.4×10-45{\displaystyle 2^{-149}\approx 1.4\times 10^{-45}}.

تحويل الأعداد العشرية إلى ثنائية 32

بشكل عام، ارجع إلى معيار IEEE 754 نفسه للتحويل الدقيق (بما في ذلك سلوك التقريب) للعدد الحقيقي إلى تنسيق binary32 المكافئ له.

هنا يمكننا أن نوضح كيفية تحويل عدد حقيقي ذي أساس 10 إلى تنسيق IEEE 754 الثنائي 32 باستخدام المخطط التالي:

  • لنفترض عددًا حقيقيًا يتكون من جزء صحيح وجزء كسري مثل 12.375
  • قم بتحويل الجزء الصحيح إلى ثنائي وتطبيعه
  • حوّل الجزء الكسري باستخدام الطريقة التالية كما هو موضح هنا
  • اجمع النتيجتين وقم بتعديلهما للحصول على تحويل نهائي صحيح

تحويل الجزء الكسري: لنأخذ 0.375، وهو الجزء الكسري من 12.375. لتحويله إلى كسر ثنائي، اضرب الكسر في 2، ثم خذ الجزء الصحيح وكرر العملية مع الكسر الجديد في 2 حتى تحصل على كسر يساوي صفرًا أو حتى تصل إلى حد الدقة وهو 23 رقمًا كسريًا لتنسيق IEEE 754 binary32.

0.375×2=0.750=0+0.750ب-1=0{\displaystyle 0.375\times 2=0.750=0+0.750\Rightarrow b_{-1}=0}يمثل الجزء الصحيح رقم الكسر الثنائي. أعد ضرب 0.750 في 2 للمتابعة.
0.750×2=1.500=1+0.500ب-2=1{\displaystyle 0.750\times 2=1.500=1+0.500\Rightarrow b_{-2}=1}
0.500×2=1.000=1+0.000ب-3=1{\displaystyle 0.500\times 2=1.000=1+0.000\Rightarrow b_{-3}=1}، الكسر = 0.011، إنهاء

نرى ذلك(0.375)10{\displaystyle (0.375)_{10}}يمكن تمثيلها بدقة في النظام الثنائي على النحو التالي:(0.011)2{\displaystyle (0.011)_{2}}لا يمكن تمثيل جميع الكسور العشرية في نظام الكسور الثنائية ذي الأرقام المحدودة. على سبيل المثال، لا يمكن تمثيل العدد العشري 0.1 في النظام الثنائي بدقة، بل بتقريب فقط. لذلك:

(12.375)10=(12)10+(0.375)10=(1100)2+(0.011)2=(1100.011)2{\displaystyle (12.375)_{10}=(12)_{10}+(0.375)_{10}=(1100)_{2}+(0.011)_{2}=(1100.011)_{2}}

بما أن تنسيق IEEE 754 الثنائي 32 يتطلب تمثيل القيم الحقيقية في(1.x1x2...x23)2×2هـ{\displaystyle (1.x_{1}x_{2}...x_{23})_{2}\times 2^{e}}في التنسيق (انظر الرقم المعياري ، الرقم غير المعياري )، يتم إزاحة 1100.011 إلى اليمين بمقدار 3 أرقام ليصبح(1.100011)2×23{\displaystyle (1.100011)_{2}\times 2^{3}}

وأخيراً يمكننا أن نرى ما يلي:(12.375)10=(1.100011)2×23{\displaystyle (12.375)_{10}=(1.100011)_{2}\times 2^{3}}

ومنه نستنتج:

  • الأس هو 3 (وبالتالي يكون في الصيغة المتحيزة(127+3)10=(130)10=(1000 ٠٠١٠)2{\displaystyle (127+3)_{10}=(130)_{10}=(1000\0010)_{2}})
  • الكسر هو 100011 (بالنظر إلى يمين النقطة الثنائية)

ومن هذه يمكننا تكوين التمثيل الناتج بتنسيق IEEE 754 الثنائي 32 بت للعدد 12.375:

(12.375)10=(0 10000010 10001100000000000000000)2=(41460000)16{\displaystyle (12.375)_{10}=(0\ 10000010\ 10001100000000000000000)_{2}=(41460000)_{16}}

ملاحظة: يُرجى مراعاة تحويل 68.123 إلى تنسيق IEEE 754 الثنائي 32 بت: باستخدام الإجراء المذكور أعلاه، يُتوقع الحصول على(42883EF9)16{\displaystyle ({\text{42883EF9}})_{16}}مع كون آخر 4 بتات هي 1001. ومع ذلك، نظرًا لسلوك التقريب الافتراضي لتنسيق IEEE 754، فإن ما تحصل عليه هو(42883EFA)16{\displaystyle ({\text{42883EFA}})_{16}}، والتي تكون آخر 4 بتات منها 1010.

مثال 1: لنأخذ العدد العشري 1. يمكننا أن نرى أن:(1)10=(1.0)2×20{\displaystyle (1)_{10}=(1.0)_{2}\times 2^{0}}

ومنه نستنتج:

  • الأس يساوي صفرًا (وبالتالي يكون في الصيغة المتحيزة كذلك).(127+0)10=(127)10=(0111 1111)2{\displaystyle (127+0)_{10}=(127)_{10}=(0111\ 1111)_{2}}
  • الكسر يساوي صفرًا (كل ما عليك فعله هو النظر إلى يمين النقطة الثنائية في 1.0).0=٠٠٠...٠{\displaystyle 0=000...0})

ومن هذه يمكننا تكوين التمثيل الناتج للعدد الحقيقي 1 بتنسيق IEEE 754 الثنائي 32 بت:

(1)10=(0 01111111 00000000000000000000000)2=(3F800000)16{\displaystyle (1)_{10}=(0\ 01111111\ 00000000000000000000000)_{2}=({\text{3F800000}})_{16}}

مثال 2: لنفترض قيمة 0.25. يمكننا أن نرى أن:(0.25)10=(1.0)2×2-2{\displaystyle (0.25)_{10}=(1.0)_{2}\times 2^{-2}}

ومنه نستنتج:

  • الأس هو -2 (وفي الصيغة المتحيزة يكون(127+(-2))10=(125)10=(0111 1101)2{\displaystyle (127+(-2))_{10}=(125)_{10}=(0111\ 1101)_{2}})
  • الكسر يساوي صفرًا (بالنظر إلى يمين الفاصلة الثنائية في 1.0، تكون جميع القيم أصفارًا)

ومن هذه يمكننا تكوين التمثيل الناتج بتنسيق IEEE 754 الثنائي 32 بت للعدد الحقيقي 0.25:

(0.25)10=(0 01111101 00000000000000000000000)2=(3E800000)16{\displaystyle (0.25)_{10}=(0\ 01111101\ 00000000000000000000000)_{2}=({\text{3E800000}})_{16}}

مثال 3: لنفترض قيمة 0.375. لقد رأينا أن0.375=(0.011)2=(1.1)2×2-2{\displaystyle 0.375={(0.011)_{2}}={(1.1)_{2}}\times 2^{-2}}

وبالتالي، بعد تحديد تمثيل بقيمة 0.375 كـ(1.1)2×2-2{\displaystyle {(1.1)_{2}}\times 2^{-2}}يمكننا المتابعة كما سبق:

  • الأس هو -2 (وفي الصيغة المتحيزة يكون(127+(-2))10=(125)10=(0111 1101)2{\displaystyle (127+(-2))_{10}=(125)_{10}=(0111\ 1101)_{2}})
  • الكسر هو 1 (بالنظر إلى يمين الفاصلة الثنائية في 1.1 يوجد واحد)1=x1{\displaystyle 1=x_{1}})

ومن هذه يمكننا تكوين التمثيل الناتج بتنسيق IEEE 754 الثنائي 32 بت للعدد الحقيقي 0.375:

(0.375)10=(0 01111101 10000000000000000000000)2=(3EC00000)16{\displaystyle (0.375)_{10}=(0\ 01111101\ 10000000000000000000000)_{2}=({\text{3EC00000}})_{16}}

تحويل ثنائي 32 إلى عشري

إذا كانت قيمة binary32، وهي 41C80000 في هذا المثال، مكتوبة بالنظام الست عشري، فإننا نقوم أولاً بتحويلها إلى النظام الثنائي:

41C8 000016=0100 ٠٠٠١ 1100 1000 0000 0000 0000 00002{\displaystyle {\text{41C8 0000}}_{16}=0100\ 0001\ 1100\ 1000\ 0000\ 0000\ 0000\ 0000_{2}}

ثم نقسمها إلى ثلاثة أجزاء: بت الإشارة، والأس، والجزء الدال.

  • بت الإشارة:02{\displaystyle 0_{2}}
  • الأس:1000 00112=8316=13110{\displaystyle 1000\ 0011_{2}=83_{16}=131_{10}}
  • المعامل المهم:100 1000 0000 0000 0000 00002=48000016{\displaystyle 100\ 1000\ 0000\ 0000\ 0000\ 0000_{2}=480000_{16}}

ثم نضيف البت الرابع والعشرين الضمني إلى الجزء ذي الدلالة:

  • المعامل المهم:1100 1000 0000 0000 0000 00002=C8000016{\displaystyle \mathbf {1} 100\ 1000\ 0000\ 0000\ 0000\ 0000_{2}={\text{C80000}}_{16}}

وفك تشفير قيمة الأس عن طريق طرح 127:

  • الأس الخام:8316=13110{\displaystyle 83_{16}=131_{10}}
  • الأس المُفكَّك:131-127=4{\displaystyle 131-127=4}

يمثل كل بت من البتات الـ 24 للجزء المهم (بما في ذلك البت الضمني رقم 24)، من البت 23 إلى البت 0، قيمة، تبدأ من 1 وتنقسم إلى نصفين لكل بت، على النحو التالي:

البت 23 = 1 البت 22 = 0.5 البت 21 = 0.25 البت 20 = 0.125 البت 19 = 0.0625 البت 18 = 0.03125 البت 17 = 0.015625 . . البت 6 = 0.00000762939453125 البت 5 = 0.000003814697265625 البت 4 = 0.0000019073486328125 البت 3 = 0.00000095367431640625 البت 2 = 0.000000476837158203125 البت 1 = 0.0000002384185791015625 البت 0 = 0.00000011920928955078125 

يحتوي الجزء المهم في هذا المثال على ثلاث بتات مضبوطة: البت 23، والبت 22، والبت 19. يمكننا الآن فك تشفير الجزء المهم عن طريق جمع القيم التي تمثلها هذه البتات.

  • الجزء المهم الذي تم فك شفرته:1+0.5+0.0625=1.5625=C80000/223{\displaystyle 1+0.5+0.0625=1.5625={\text{C80000}}/2^{23}}

ثم نحتاج إلى الضرب في الأساس، 2، مرفوعًا إلى قوة الأس، للحصول على النتيجة النهائية:

1.5625×24=25{\displaystyle 1.5625\times 2^{4}=25}

هكذا

41C8 0000=25{\displaystyle {\text{41C8 0000}}=25}

هذا يعادل:

ن=(-1)s×(1+م*2-23)×2x-127{\displaystyle n=(-1)^{s}\times (1+m*2^{-23})\times 2^{x-127}}

حيث s هو بت الإشارة، و x هو الأس، و m هو الجزء الدال.

قيود الدقة على القيم العشرية (بين 1 و 16777216)

  • الأعداد العشرية بين 1 و 2: فترة ثابتة 2 −23 (1+2 −23 هو أكبر عدد عشري بعد 1)
  • الأعداد العشرية بين 2 و 4: فترة ثابتة 2 - 22
  • الأعداد العشرية بين 4 و 8: فترة ثابتة 2 - 21
  • ...
  • الأعداد العشرية بين 2n و 2n +1 : فترة ثابتة 2n−23
  • ...
  • الأعداد العشرية بين = 4,194,304 و = 8,388,608: فترة ثابتة 2⁻¹ = 0.5
  • الأعداد العشرية بين 2²³ = 8,388,608 و 2²⁴ = 16,777,216: فترة ثابتة 2⁰ = 1

قيود الدقة على القيم الصحيحة

  • يمكن تمثيل الأعداد الصحيحة بين -16,777,216 و16,777,216 (بما في ذلك الصفر) بدقة
  • الأعداد الصحيحة بين 2 24 = 16,777,216 و 2 25 = 33,554,432 تُقرّب إلى مضاعفات العدد 2 (عدد زوجي).
  • الأعداد الصحيحة بين 225 و 226 ​​تُقرّب إلى مضاعفات العدد 4
  • ...
  • الأعداد الصحيحة بين 2n و 2n+1 تُقرّب إلى مضاعفات العدد 2n -23
  • ...
  • الأعداد الصحيحة بين 2127 و 2128 تُقرّب إلى مضاعفات العدد 2104
  • يتم تقريب الأعداد الصحيحة الأكبر من أو تساوي 2128 إلى "اللانهاية".

حالات بارزة ذات دقة مفردة

تُقدَّم هذه الأمثلة بتمثيل البتات ، بالنظام الست عشري والثنائي ، لقيمة الفاصلة العائمة. ويشمل ذلك الإشارة، والأس (المتحيز)، والجزء الكسري.

0 00000000 00000000000000000000001 2 = 0000 0001 16 = 2 −126 × 2 −23 = 2 −149 ≈ 1.4012984643 × 10 −45 (أصغر عدد موجب دون المستوى الطبيعي)                                       

0 00000000 11111111111111111111111 2 = 007f ffff 16 = 2 −126 × (1 − 2 −23 ) ≈ 1.1754942107 × 10 −38 (أكبر عدد دون الطبيعي)                                       

0 00000001 00000000000000000000000 2 = 0080 0000 16 = 2 −126 ≈ 1.1754943508 × 10 −38 (أصغر عدد طبيعي موجب)                                       

0 11111110 111111111111111111111111 2 = 7f7f ffff 16 = 2 127 × (2 − 2 −23 ) ≈ 3.4028234664 × 10 38 (أكبر عدد طبيعي)                                       

0 01111110 11111111111111111111111 2 = 3f7f ffff 16 = 1 − 2 −24 ≈ 0.999999940395355225 (أكبر عدد أقل من واحد)                                       

0 01111111 00000000000000000000000 2 = 3f80 0000 16 = 1 (واحد)

0 01111111 00000000000000000000001 2 = 3f80 0001 16 = 1 + 2 −23 ≈ 1.00000011920928955 (أصغر عدد أكبر من واحد)                                       

1 10000000 00000000000000000000000 2 = c000 0000 16 = −2 0 00000000 00000000000000000000000 2 = 0000 0000 16 = 0 1 00000000 00000000000000000000000 2 = 8000 0000 16 = −0

0 11111111 00000000000000000000000 2 = 7f80 0000 16 = ما لا نهاية 1 11111111 00000000000000000000000 2 = ff80 0000 16 = − ما لا نهاية

0 01111101 01010101010101010101011 2 = 3eaa aaab 16 ≈ 0.333333343267440796 ≈ 1/3 0 10000000 10010010000111111011011 2 = 4049 0fdb 16 ≈ 3.14159274101257324 ≈ π (باي)

x 11111111 10000000000000000000001 2 = ffc0 0001 16 = qNaN (على معالجات x86 و ARM) x 11111111 00000000000000000000001 2 = ff80 0001 16 = sNaN (على معالجات x86 و ARM)

افتراضيًا، يتم تقريب العدد 1/3 إلى الأعلى، بدلًا من الأسفل كما في الدقة المزدوجة ، نظرًا لوجود عدد زوجي من البتات في الجزء الكسري. البتات المتبقية من 1/3 بعد نقطة التقريب هي 1010...0، وهو ما يزيد عن نصف وحدة في الخانة الأخيرة .

لم تُحدد معايير IEEE 754 ترميزات qNaN وsNaN ، وتُنفذ هذه الترميزات بطرق مختلفة على المعالجات المختلفة. تستخدم معالجات عائلة x86 وعائلة ARM البت الأكثر أهمية في حقل المعامل للإشارة إلى NaN غير نشط . بينما تستخدم معالجات PA-RISC هذا البت للإشارة إلى NaN نشط .

التحسينات

يُتيح تصميم تنسيق الفاصلة العائمة تحسيناتٍ متنوعة، ناتجة عن سهولة توليد تقريب لوغاريتمي أساسه 2 من عرض عددي صحيح لنمط البتات الخام. ويمكن أن تُنتج العمليات الحسابية الصحيحة وإزاحة البتات تقريبًا للجذر التربيعي المعكوس ( الجذر التربيعي العكسي السريع )، وهو مطلوبٌ عادةً في رسومات الحاسوب .

انظر أيضاً

مراجع

  1. "CLHS: Type SHORT-FLOAT, SINGLE-FLOAT, DOUBLE-FLOAT..." www.lispworks.com .
  2. "أنواع البيانات الأولية" . وثائق جافا .
  3. "6 أنواع وفئات محددة مسبقًا" . haskell.org . 20 يوليو 2010.
  4. "Float" . وثائق مطوري Apple .
  5. ويليام كاهان (1 أكتوبر 1997). "ملاحظات محاضرة حول وضع معيار IEEE 754 للحسابات الثنائية ذات الفاصلة العائمة" (ملف PDF) . ص 4. مؤرشف من الأصل (ملف PDF) في 8 فبراير 2012.