تنسيق أعداد الحاسب

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

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

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

الجدول 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
...

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

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

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

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

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

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

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

النظام الثماني والست عشري وسائل مريحة لتمثيل الأرقام الثنائية، تُستخدم من قبل أجهزة الكمبيوتر. غالبًا ما يحتاج مهندسو الحاسب لكتابة كميات بنظام العد الثنائي، ولكن في الممارسة كتابة رقم ثنائي مثل 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. لتحويل من الست عشري أو الثماني إلى العشري، يتم ضرب قيمة كل خانة بقيمة موضعها ثم يتم جمع النتائج. على سبيل المثال:

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

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

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

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

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

بت عدد صحيح كسور بت
0.500 = 12 = 00000000 00000000.10000000 00000000
1.250 = 1+14 = 00000000 00000001.01000000 00000000
7.375 = 7+38 = 00000000 00000111.01100000 00000000

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

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

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

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

في حين أن كلا من الأعداد بإشارة وبدون إشارة تُستخدم في أنظمة الأعداد، حتى عدد صحيح من 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 ...[6]

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

  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.