**تنسيق أعداد الحاسب** هو تمثيل القيم العددية داخل معدات وبرمجيات الحاسوب و الآلة حاسبة. عادة، يتم تخزين القم العددية كمجموعات من البتات، سُميت بذلك نسبة إلى على عدد الوحدات التي تتألف منها. تم اختيار الترميز بين القيم العددية وسلسلة البتات ليتلاءم مع عمليات الحاسب؛ تنسيق البتات المُستخدم في مجموعة تعليمات جهاز الكمبيوتر يتطلب التحويل عمومًا للاستخدام الخارجي مثل الطباعة والعرض. الأنواع المختلفة من المعالجات قد تمتلك تمثيلات داخلية مختلفة للقيم العددية. اتفاقيات مختلفة يتم استخدامها للأعداد الصحيحة والحقيقية. معظم الحسابات يتم إجراؤها بتنسيق الأعداد بطريقة تتناسب مع سجل المعالج، ولكن بعض الأنظمة البرمجية تسمح بتمثيل أعداد كبيرة وعشوائية  باستخدام عدة كلمات من الذاكرة.

التمثيل الثنائي للأعداد
-----------------------

أجهزة الكمبيوتر تمثل البيانات كمجموعات من الأرقام الثنائية. يتكون التمثيل من بتات، والتي بدورها يتم تجميعها في مجموعات أكبر مثل بايت.

الجدول 1: ثنائي إلى رقم ثماني| سلسلة ثنائي | ثماني القيمة |
| --- | --- |
| 000 | 0 |
| 001 | 1 |
| 010 | 2 |
| 011 | 3 |
| 100 | 4 |
| 101 | 5 |
| 110 | 6 |
| 111 | 7 |

الجدول 2: عدد القيم قليلا السلسلة.| طول Bit String (ب) | عدد القيم الممكنة (N) |
| --- | --- |
| 1 | 2 |
| 2 | 4 |
| 3 | 8 |
| 4 | 16 |
| 5 | 32 |
| 6 | 64 |
| 7 | 128 |
| 8 | 256 |
| 9 | 512 |
| 10 | 1024 |
| ... |
| {\displaystyle } | {\displaystyle } |

ال*بت* هو ثنائي الرقم الذي يمثل واحد من اثنين من الأوضاع. يُمكن استيعاب مفهوم البت  على أنها قيمة إما *1* أو *0*, *مفتوح* أو *مغلق*, *نعم* أو *لا*, *صح* أو *خطأ*أو الترميز عن طريق المفتاح الكهربائي أو مقلاد نوعًا ما.

في حين أن البت الواحد، من تلقاء نفسه، غير قادرة على تمثل سوى اثنين من قيم سلسلة البتات، يمكن أن تستخدم لتمثيل أكبر القيم. على سبيل المثال سلسلة من ثلاثة بتات يمكن أن تمثل ما يصل إلى ثمانية قيم مختلفة كما هو موضح في الجدول 1.

كلما زاد عدد البتات التي تكون السلسلة، زاد عدد التوزيعات الممكنة ل *0* و *1* بعلاقة أسية. البت الواحد يسمح بتمثيل توزيعتين فقط من القيم و 2 من البتات تسمح بتمثيل 4 توزيعات من القيم وهكذا. عدد التوزيعات الممكنة يتضاعف لكل خانة من البتات يتم إضافتها، كما هو موضح في الجدول 2.

التجميع بعدد محدد من البتات يُستخدم لتمثيل أشياء مختلفة ولها أسماء محددة.

البايت هو سلسلة من البتات تتكون من العدد المطلوب من البتات لتمثيل رمز.على معظم أجهزة الكمبيوتر الحديثة، هو سلسلة من ثمانية بتات. لأن تعريف البايت يتعلق بعدد البتات التي تكون الرمز، بعض أجهزة الكمبيوتر القديمة قد استخدمت طول مختلف للبايت الخاص بها. في العديد من معماريات الحاسوب، يُستخدم البايت لعنونة مناطق محددة من الذاكرة. على سبيل المثال، على الرغم من أن معالجات 64 بت تقوم بعنونة الذاكرة 64 بت في وقت واحد، قد لا يزال تقسيم هذه الذاكرة إلى قطع من ثمانية بتات. وهذا ما يسمى بعنونة الذاكرة بالبايتات. تاريخيا العديد من وحدات المعالجة المركزية تقرأ البيانات في بعض مضاعفات ثمانية بت. لأن البايت ذو حجم ثمانية بت شائع جدا، ولكن التعريف غير موحد، مصطلح الثماني يستخدم أحيانا بشكل تصريحي لوصف سلسلة من 8 بتات.

النايبل (في بعض الأحيان *nybble*) هو عدد يتألف من أربعة بتات. كونه نصف بايت، فإن اسمه عبارة عن تلاعب لاكلمات. قد يحتاج الشخص إلى عدد من النايبل لتكوين بايت واحد من الشيء؛ وبالمثل، النايبل هو جزء من بايت. لأن أربعة بت تسمح بتكوين ستة عشر قيمة، النايبل يُعرف أحيانًا باسم ست عشري.

عرض الأعداد الثمانية والست عشرية
--------------------------------

النظام الثماني والست عشري وسائل مريحة لتمثيل الأرقام الثنائية، تُستخدم من قبل أجهزة الكمبيوتر. غالبًا ما يحتاج مهندسو الحاسب لكتابة كميات بنظام العد الثنائي، ولكن في الممارسة كتابة رقم ثنائي مثل 1001001101010001 مملة وأكثر عرضة للأخطاء. ولذلك كتابة كميات نظام العد الثنائي ككميات مكتوبة في قاعدة 8 أو «ثماني»، أو، أكثر شيوعا، قاعدة-16, «ست عشري» لصياغة الأرقام. في النظام العشري، هناك 10 أرقام من 0 إلى 9، يت تجميعها لتشكيل رقم. في النظام الثماني، هناك فقط 8 أرقام من 0 إلى 7. أي أن قيمة ثماني "10" هو نفس عشري "8" ثماني "20" عشري "16". في النظام الست عشري، وهناك 16 من الأرقام من 0 إلى 9 يتبعها، بالاتفاق، من A لF ، لذلك، ست عشري ال "10" هو نفس عشري "16" ست عشري "20" هو نفس عشري "32". موضح في الرسم البياني أدناه مثال ومقارنة بين الأرقام في الأنظمة المختلفة.

عند كتابة أرقام، رموز متناسقة تُستخدم لوصف أعداد النظام، على سبيل المثال 000\_0000B أو 0b000\_00000 الثنائية و 0F8H أو 0xf8 عن أرقام ست عشرية.

### التحويل بين أنظمة الأعداد

الجدول 3: مقارنة قيم في قواعد مختلفة| القيمة العشرية | ثنائي القيمة | ثماني القيمة | قيمة ست عشرية |
| --- | --- | --- | --- |
| 0 | 000000 | 00 | 00 |
| 1 | 000001 | 01 | 01 |
| 2 | 000010 | 02 | 02 |
| 3 | 000011 | 03 | 03 |
| 4 | 000100 | 04 | 04 |
| 5 | 000101 | 05 | 05 |
| 6 | 000110 | 06 | 06 |
| 7 | 000111 | 07 | 07 |
| 8 | 001000 | 10 | 08 |
| 9 | 001001 | 11 | 09 |
| 10 | 001010 | 12 | 0A |
| 11 | 001011 | 13 | 0B |
| 12 | 001100 | 14 | 0C |
| 13 | 001101 | 15 | 0D |
| 14 | 001110 | 16 | 0E |
| 15 | 001111 | 17 | 0F |

كل من هذه الأنظمة العددية هو نظام موضعي، ولكن في حين أن وزن النظام  العشري هو قوى من 10 النظام الثماني قوى 8 الست عشري قوى 16. لتحويل من الست عشري أو الثماني إلى العشري، يتم ضرب قيمة كل خانة بقيمة موضعها ثم يتم جمع النتائج. على سبيل المثال:

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

{\displaystyle }

تمثيل الكسور في النظام الثنائي
------------------------------

### أعداد ثابتة الفاصلة

تنسيق الأعداد ثابتة الفاصلة يمكن أن يكون مفيدًا لتمثيل الكسور في النظام الثنائي.

عدد البتات اللازمة للوصول للدقة والمدى المطلوب يجب أن يتم اختياره لتخزين الأجزاء الكسرية والصحيحة للعدد. على سبيل المثال باستخدام تنسيق 32 بت يمكن استخدام 16 بت للجزء الصحيح و 16 للجزء العشري.

الثمانية بتات تتبعها 4 بتات، ثم اثنين بت، ثم واحد بت. وتستمر البتات الكسرية في النمط الذي تحدده البتات الصحيحة. البت التالي هو نصف بت، ثم ربع بت، ثم ⅛ بت. على سبيل المثال:

|  |  |
| --- | --- |
| بت عدد صحيح | كسور بت |
| 0.500 | = | 1**⁄**2 | = | 00000000 00000000.10000000 00000000 |
| 1.250 | = | 1~~+~~1**⁄**4 | = | 00000000 00000001.01000000 00000000 |
| 7.375 | = | 7~~+~~3**⁄**8 | = | 00000000 00000111.01100000 00000000 |

هذا النوع من الترميز لا يمكن أن يمثل بعض القيم في النظام الثنائي. على سبيل المثال، الكسر {\displaystyle }، 0.2 في العشري، أقرب تقريب له سيكون على النحو التالي:

|  |  |  |  |  |
| --- | --- | --- | --- | --- |
| 13107 / 65536 | = | 00000000 00000000.00110011 00110011 | = | 0.1999969 في العشرية... |
| 13108 / 65536 | = | 00000000 00000000.00110011 00110100 | = | 0.2000122 في العشرية... |

حتى إذا استخدنا خانات أكثر، التمثيل الدقيق مستحيل. العدد {\displaystyle }يُكتب في العشرية 0.333333333... يستمر إلى إلى أجل غير مسمى. لو توقف قبل أجله، فإن القيمة لن تمثل  {\displaystyle } بدقة.

### أعداد الفاصلة العائمة أو النقطة العائمة

في حين أن كلا من الأعداد بإشارة وبدون إشارة تُستخدم في أنظمة الأعداد، حتى عدد صحيح من 32-بت لا يكفي للتعامل مع كل مجموعات الأرقام التي يمكن للآلة الحاسبة التعامل معها، وهذا ليس فقط الكسور. لتقريب مجموعة أكبر وأكثر دقة من  الأرقام الحقيقية، يجب أن نتخلى عن نظام الأعداد الصحيحة بدون إشارة ونظام  النقطة ثابتة الأرقام، وننتقل إلى تنسيق «النقطة العائمة».

في النظام العشري، نحن على دراية بأرقام الفاصلة العائمة غلى صورة (الكتابة العلمية):

1.1030402 × 105 = 1.1030402 × 100000 = 110304.02
أو بشكل مضغوط أكثر:

1.1030402E5
وهو ما يعني العدد واحد «1.1030402  مرة تليها 5 أصفار». لدينا بعض القيمة الرقمية (1.1030402) المعروفة باسم «معامل»، مضروبا بقوة من 10 (E5, يعني 105 أو 100، 000)، والمعروفة باسم «الأس».
إذا كان لدينا أس سالب، فهذا يعني أن الرقم مضروب في 1 إلى عدة أماكن على يمين النقطة العشرية. على سبيل المثال:

2.3434 E-6 = 2.3434 × 10-6 = 2.3434 × 0.000001 = 0.0000023434
ميزة هذا النظام هو أنه باستخدام الأس يمكننا الحصول على مجموعة أوسع بكثير من الأرقام، حتى لو كان عدد المعاملات كبير جدًا، أو «دقة الرقم» أصغر بكثير من النطاق. تنسيقات مماثلة للفاصلة العائمة الثنائية يمكن استخدامها لتعريف أجهزة الكمبيوتر. هناك عدد من هذه المخططات الأكثر شعبية تم تحديدها من قبل معهد مهندسي الكهرباء والإلكترونيات (IEEE). في IEEE 754-2008 ، تم تحديد المواصفات القياسية  ك 64 بت لتنسيق الفاصلة العائمة:

* 11-بت ثنائي للأس باستخدام تنسيق «فائض-1023». فائض-1023 يعني أن الأس يظهر كعدد ثنائي صحيح من غير إشارة من 0 إلى 2047; طرح 1023 يعطي القيمة الفعلية بإشارتها.
* 52-بت للمعاملات، أيضا عدد ثنائي صحيح من غير إشارة، يقوم بتحديد قيمة كسور مع 1 زائدة ضمنية.
* 1 بت للعلامة، لإعطاء علامة للعدد.

دعونا نرى كيف يبدو هذا التنسيق من خلال إظهار كيف يتم تخزين هذا العدد في 8 بايت من الذاكرة:

|  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| البايت 0: | S | x10 | x9 | x8 | x7 | x6 | x5 | x4 |
| 1 بايت: | x3 | x2 | x1 | x0 | m51 | m50 | m49 | m48 |
| 2 بايت: | وm47 | m46 | m45 | m44 | m43 | m42 | m41 | m40 |
| بايت 3: | m39 | m38 | m37 | m36 | m35 | m34 | m33 | m32 |
| بايت 4: | m31 | m30 | m29 | m28 | m27 | m26 | m25 | m24 |
| بايت 5: | m23 | m22 | m21 | m20 | m19 | m18 | m17 | m16 |
| بايت 6: | m15 | m14 | m13 | m12 | m11 | m10 | m9 | m8 |
| بايت 7: | m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |

حيث "S" يدل على البت المخصص للإشارة، "x" يدل على الأس، و "m" يدل على البتات التي تمثل المعاملات.عندما  يتم استخراج البتات، يتم تحويلها بهذه الحسابات:

<علامة> × (1 + <معاملات>) × 2<الأس> - 1023
هذا المخطط يوفر أرقام صحيحة إلى حوالي 15 من الأرقام العشرية التالية، بمجموعة مدى الأرقام التالية:

| الحد لأقصى | الحد الأدنى |
| --- | --- |
| موجب | 1.797693134862231 E+308 | 4.940656458412465 E-324 |
| سالب | -4.940656458412465 E-324 | -1.797693134862231 E+308 |

هذه المواصفات تحدد أيضا عدد من القيم الخاصة الغير معرفة، وهي شائغة باسم *NaNs* ، «ليس عددا». وتستخدم هذه القيم في البرامج لتعيين العمليات الغير صالحة ومثل ذلك.

بعض البرامج أيضا تستخدم نظام 32 بت لأعداد الفاصلة العائمة. النظام الأكثر شيوعا يستخدم  23 بت للمعامل مع بت واحد للعلامة، إضافة إلى 8 بتات للأس في تنسيق «الفائض-127». مُعطى 7 خانات عشرية صحيحة.

|  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| البايت 0: | S | x7 | x6 | x5 | x4 | x3 | x2 | x1 |
| 1 بايت: | x0 | m22 | m21 | m20 | m19 | m18 | m17 | m16 |
| 2 بايت: | m15 | m14 | m13 | m12 | m11 | m10 | m9 | m8 |
| بايت 3: | m7 | m6 | m5 | m4 | m3 | m2 | m1 | m0 |

يت تحويل البتات إلى قيمة عددية بهذه الحسابات:

<علامة> × (1 + <كسور معاملها>) × 2<الأس> - 127
مما يؤدي إلى المدى التالي من الأرقام:

| الحد الأقصى | الحد الأدنى |
| --- | --- |
| موجب | 3.402823 E+38 | 2.802597 E-45 |
| سالب | -2.802597 E-45 | -3.402823 E+38 |

أرقام الفاصلة العائمة معروفة باسم  «حقيقية» أو «عائمة» بشكل عام، ولكن مع وجود عدد من الاختلافات:

أرقام الفاصلة العائمة 32 بت تُسمى أحيانا «حقيقية 32» أو «أحادي» بمعنى «قيمة أحادية الدقة وبنقطة عائمة».

رقام الفاصلة العائمة 64 بت تُسمى أحيانا «حقيقية 64» أو «مزدوجة»، بمعنى «قيمة مزدوجة الدقة وبنقطة عائمة».

يتم اختيار العلاقة بين الأرقام وأنماط البتات من أجل ملاءمة معالجة الحاسب؛ ثمانية بايت مخزنة في ذاكرة الكمبيوتر قد تمثل ب64 بت الحقيقي، أو باثنين 32 بت الحقيقي، أو أربعة من الأعداد الصحيحة بإشارة أو بغير إشارة، أو أي نوع آخر من البيانات التي تناسبها في ثمانية بايت. الفرق الوحيد هو كيف يفسر الكمبيوتر هذه الأنظمة. إذا خزن الكمبيوتر أربعة من الأعداد الصحيحة بغير إشارة ومن ثم قرأها مرة أخرى من الذاكرة ك64-بت الحقيقي، فسينتج عدد صالح تمامًا بشكل دائم  تقريبًا، على الرغم من أنه سيكون من البيانات غير المرغوب فيها (غير صحيح).

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

التمثيل محدود الدقة. على سبيل المثال، 15 خانة عشرية فقط يمكن أن تكون ممثلة مع 64 بت الحقيقي. إذا تمت إضافة عدد صغير جدا من تنسيق النقطة العائمة إلى كبير، النتيجة هي مجرد العدد الكبير. العدد الصغير كان صغيرًا جدًا لدرجة أنه لا يظهر في 15 أو 16 التنسيق، فيتجاهل الحاسب ذلك بشكل فعال. تحليل تأثير محدودية الدقة هو مشكلة مدروسة جيدًا. تقديرات حجم أخطاء التقريب ووضع أساليب للحد من تأثيرها على الحسابات الكبيرة هو جزء من أي مشروع حسابي كبير. محدودية الدقة تختلف عن محدودية المجال، لأنها تؤثر على المعامل، وليس الأس.

المعامل هو كسر في النظام الثنائي والذي ليس بالضرورة أن يتوافق تمامًا مع الكسر العشري. في كثير من الحالات، لا يتطابق مجموع القوى ل2 مع الكسر العشري المحدد، ونتائج العمليات الحسابية سيكون منزاحًا قليلًا. على سبيل المثال، الكسر العشري "0.1"  يعادل تكرار لا نهائي للكسر الثنائي: 0.000110011 ...

الأرقام في لغات البرمجة
-----------------------

البرمجة في لغة التجميع تتطلب من المبرمج تتبع تمثيل الأرقام. حيث أن المعالج لا يدعم العملية الرياضية المطلوبة، يجب على المبرمج عمل خوارزمية مناسبة وسلسلة تعليمات لتنفيذ العملية; في بعض المعالجات الدقيقة، حتى ضرب الأعداد الصحيحة يجب القيام به برمجيًا.

لغات البرمجة عالية المستوى مثل LISP وبايثون توفر الأعداد المجردة، التي قد تكون  أنواع موسعة مثل: الأعداد النسبية، *الأعداد الكبيرة جدًا، الأعداد* المركبة. يتم تنفيذ العمليات الرياضية من خلال إجراءات المكتبات المقدمة من خلال تنفيذ اللغة. الرمز الرياضي مُعطى في شفرة المصدر، فيتم استدعاء أجزاء برمجية مختلفة بحيث تناسب نوع التمثيل العددي من قبل مشغل الحمولة الزائدة، ؛ العمليات الحسابية على أي عدد— سواءً كان بإشارة، بغير إشارة، نسبي، بفاصلة عائمة، بفاصلة ثابتة، صحيح، مركب — كلها مكتوبة بنفس الطريقة.

بعض اللغات مثل REXX وجافا، وتوفير عمليات لأنظمة الأعداد بفاصلة عشرية عائمة، والتي توفر أخطاء التقريب بشكل مختلف.

انظر أيضا
---------

* مرمزة ثنائي عشري
* نظام الأرقام الثنائية
* رمادي رمز
* الست عشرية
* نظام الأرقام
* ثماني

الملاحظات والمراجع
------------------

1. ↑  Jon Stokes (2007). *Inside the machine: an illustrated introduction to microprocessors and computer architecture*. No Starch Press. ص. 66. ISBN:978-1-59327-104-6. مؤرشف من الأصل في 2020-03-04.
2. ↑  "byte definition". مؤرشف من الأصل في 2018-08-14. اطلع عليه بتاريخ 2012-04-24.
3. ↑  "Microprocessor and CPU (Central Processing Unit)". Network Dictionary. مؤرشف من الأصل في 2017-10-03. اطلع عليه بتاريخ 2012-05-01.
4. ↑  "nybble definition". مؤرشف من الأصل في 2016-10-11. اطلع عليه بتاريخ 2012-05-03.
5. ↑  "Nybble". TechTerms.com. مؤرشف من الأصل في 2019-03-13. اطلع عليه بتاريخ 2012-05-03.
6. ↑  Goebel، Greg. "Computer Numbering Format". مؤرشف من الأصل في 2018-07-25. اطلع عليه بتاريخ 2012-09-10.

* أيقونة بوابةبوابة علم الحاسوب
* أيقونة بوابةبوابة برمجة الحاسوب