تنسيق النقطة العائمة مزدوج الدقة
تنسيق النقطة العائمة مزدوج الدقة (بالإنجليزية: Double-precision floating-point format)، هو تنسيق من تنسيقات أعداد الحاسوب، يَشغل عادةً 64 بت في ذاكرة الحاسوب؛ يمثل مجموعة ديناميكية واسعة من القيم الرقمية باستخدام فاصلة الأساس عائمة.
تُستخدم الفاصلة العائمة لتمثيل القيم الكسرية، أو عندما تكون هناك حاجة إلى نطاق أوسع مما يتم توفيره بواسطة الفاصلة (النقطة) الثابتة (بنفس عرض البت)، حتى لو كانت على حساب الدقة. يمكن اختيار الدقة المزدوجة عندما يكون نطاق أو دقة الدقة الواحدة غير كاف.
في معيار IEEE 754-2008، يُشار رسميًا إلى تنسيق 64 بت الأساس-2 باسم 64-ثنائي؛ كان يطلق عليه ضعف double في IEEE 754-1985. يحدد معيات IEEE 754 تنسيقات الفاصلة العائمة الإضافية، بما في ذلك الدقة الأحادية 32 بت للأساس-2 و تمثيلات الأساس 10.
كانت فورتران واحدة من لغات البرمجة الأولى التي قدمت أنواع بيانات النقطة العائمة أحادية ومزدوجة الدقة. قبل اعتماد IEEE 754-1985 على نطاق واسع، كان تمثيل وخصائص أنواع بيانات الفاصلة العائمة يعتمد على الشركة المصنعة للحاسوب ونموذج الحاسوب، وعلى القرارات التي اتخذها منفذي لغة البرمجة. على سبيل المثال، كان نوع البيانات مزدوج الدقة GW-BASIC هو تنسيق الفاصلة العائمة 64 بت للنقطة العائمة.[1][2]
أمثلة مزدوجة الدقة
0 01111111111 0000000000000000000000000000000000000000000000000000 2 01111111111 0 01111111111 0000000000000000000000000000000000000000000000000000 2 ≙ 3FF0 0000 0000 0000 16 ≙ +2 0 × 1 = 1 | |
| |
0 01111111111 0000000000000000000000000000000000000000000000000010 2 01111111111 0 01111111111 0000000000000000000000000000000000000000000000000010 2 ≙ 3FF0 0000 0000 0002 16 ≙ +2 0 × (1 + 2 −51 ) ≈ 1.0000000000000004 | |
0 10000000000 0000000000000000000000000000000000000000000000000000 2 ≙ 4000 0000 0000 0000 16 ≙ +2 1 × 1 = 2 | |
1 10000000000 0000000000000000000000000000000000000000000000000000 2 ≙ C000 0000 0000 0000 16 ≙ −2 1 × 1 = −2 |
0 10000000000 1000000000000000000000000000000000000000000000000000 2 ≙ 4008 0000 0000 0000 16 ≙ +2 1 × 1.1 2 |
= 11 2 = 3 |
0 10000000001 0000000000000000000000000000000000000000000000000000 2 ≙ 4010 0000 0000 0000 16 ≙ +2 2 × 1 |
= 100 2 = 4 |
0 10000000001 0100000000000000000000000000000000000000000000000000 2 0100000000000000000000000000000000000000000000000000 0 10000000001 0100000000000000000000000000000000000000000000000000 2 ≙ 4014 0000 0000 0000 16 ≙ +2 2 × 1.01 2 |
= 101 2 = 5 |
0 10000000001 1000000000000000000000000000000000000000000000000000 2 ≙ 4018 0000 0000 0000 16 ≙ +2 2 × 1.1 2 |
= 110 2 = 6 |
0 10000000011 0111000000000000000000000000000000000000000000000000 2 ≙ 4037 0000 0000 0000 16 ≙ +2 4 × 1.0111 2 |
= 10111 2 = 23 |
0 01111111000 1000000000000000000000000000000000000000000000000000 2 01111111000 0 01111111000 1000000000000000000000000000000000000000000000000000 2 ≙ 3F88 0000 0000 0000 16 ≙ +2 −7 × 1.1 2 |
= 0.00000011 2 = 0.01171875 (3/256) |
0 00000000000 0000000000000000000000000000000000000000000000000001 2 |
≙ 0000 0000 0000 0001 16 ≙ +2 −1022 × 2 −52 = 2 −1074 <br/> 40 4.9406564584124654 × 10 −324 |
(الحد الأدنى المزدوج الإيجابي دون العادي) |
0 00000000000 1111111111111111111111111111111111111111111111111111 2 |
≙ 000F FFFF FFFF FFFF 16 ≙ +2 −1022 × (1-2 −52 ) <br/> 250 2.2250738585072009 × 10 −308 |
(الحد الأقصى المزدوج العادي) |
0 00000000001 0000000000000000000000000000000000000000000000000000 2 |
≙ 0010 0000 0000 0000 16 ≙ +2 −1022 × 1 <br/> 250 2.2250738585072014 × 10 −308 |
(الحد الأدنى المزدوج الإيجابي العادي) |
0 11111111110 1111111111111111111111111111111111111111111111111111 2 |
F 7FEF FFFF FFFF FFFF 16 ≙ +2 1023 × (1 + ( 1-2-2−52 )) <br/> ≈ 1,7976931348623157 × 10 308 |
(الحد الأقصر المزدوج) |
0 00000000000 0000000000000000000000000000000000000000000000000000 2 |
000 0000 0000 0000 0000 16 ≙ +0 | |
1 00000000000 0000000000000000000000000000000000000000000000000000 2 |
000 8000 0000 0000 0000 16 ≙ −0 | |
0 11111111111 0000000000000000000000000000000000000000000000000000 2 |
≙ 7FF0 0000 0000 0000 16 ≙ + ∞ | (اللانهاية الإيجابية) |
1 11111111111 0000000000000000000000000000000000000000000000000000 2 |
≙ FFF0 0000 0000 0000 16 ≙ −∞ | (اللانهاية السلبية) |
0 11111111111 0000000000000000000000000000000000000000000000000001 2 |
≙ 7FF0 0000 0000 0001 16 ≙ نان | (sNaN في معظم المعالجات، مثل x86 و ARM) |
0 11111111111 1000000000000000000000000000000000000000000000000001 2 |
≙ 7FF8 0000 0000 0001 16 ≙ NaN | (qNaN على معظم المعالجات، مثل x86 و ARM) |
0 11111111111 1111111111111111111111111111111111111111111111111111 2 |
≙ 7FFF FFFF FFFF FFFF 16 ≙ NaN | (ترميز بديل ل NaN) |
0 01111111101 0101010101010101010101010101010101010101010101010101 2 <br/> = 3fd5 5555 5555 5555 16 |
≙ +2 −2 × (1 + 2 −2 + 2 −4 + ... + 2 −52 ) <br/> ≈ 1/3 |
0 10000000000 1001001000011111101101010100010001000010110100011000 2 = 4009 21fb 5444 2d18 16 |
≈ باي |
لم يتم تحديد ترميزات qNaN و sNaN بالكامل في IEEE 754 وتعتمد على المعالج. تستخدم معظم المعالجات، مثل عائلة x86 ومعالجات عائلة ARM، الجزء الأكثر أهمية من المجال ذو الأهمية للإشارة إلى شبيه NaN، هذا ما يوصي به IEEE 754. تستخدم معالجات PA-RISC البت للإشارة إلى NaN للإشارة.
افتراضيا، 03/01 تقرب للأسفل، بدلا من الدقة الواحدة، نظرا لوجود عدد فردي من البتات في significand.
بتفاصيل أكثر:
Given the hexadecimal representation 3FD5 5555 5555 555516, Sign = 0 Exponent = 3FD16 = 1021 Exponent Bias = 1023 (constant value; see above) Fraction = 5 5555 5555 555516 Value = 2(Exponent − Exponent Bias) × 1.Fraction – Note that Fraction must not be converted to decimal here = 2−2 × (15 5555 5555 555516 × 2−52) = 2−54 × 15 5555 5555 555516 = 0.333333333333333314829616256247390992939472198486328125 ≈ 1/3
انظر أيضًا
- IEEE 754 ، معيار IEEE لحسابات النقطة العائمة
ملاحظات ومراجع
- David M. (14 أكتوبر 2018)، Formal Verification of Floating-Point Hardware Design، Cham: Springer International Publishing، ص. 63–75، ISBN 978-3-319-95512-4، مؤرشف من الأصل في 22 أغسطس 2020.
- "Henderson, (Patrick) David, (10 April 1927–30 Sept. 2018), economist, author and consultant"، Who Was Who، Oxford University Press، 01 ديسمبر 2007، ISBN 978-0-19-954089-1، مؤرشف من الأصل في 22 أغسطس 2020.
- بوابة علم الحاسوب