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

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

 التمثيل الثنائي للأعداد 
أجهزة الكمبيوتر تمثل البيانات كمجموعات من الأرقام الثنائية. يتكون التمثيل من بتات، والتي بدورها يتم تجميعها في مجموعات أكبر مثل بايت.
+الجدول 1: ثنائي إلى رقم ثمانيسلسلة ثنائيثماني القيمة00000011010201131004101511061117
+الجدول 2: عدد القيم قليلا السلسلة.طول Bit String (ب)عدد القيم الممكنة (N)122438416532664712882569512101024...
البت هو ثنائي الرقم الذي يمثل واحد من اثنين من الأوضاع. يُمكن استيعاب مفهوم البت  على أنها قيمة إما 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: مقارنة قيم في قواعد مختلفةالقيمة العشريةثنائي القيمةثماني القيمةقيمة ست عشرية0000000000010000010101200001002023000011030340001000404500010105056000110060670001110707800100010089001001110910001010120A11001011130B12001100140C13001101150D14001110160E15001111170F
كل من هذه الأنظمة العددية هو نظام موضعي، ولكن في حين أن وزن النظام  العشري هو قوى من 10 النظام الثماني قوى 8 الست عشري قوى 16. لتحويل من الست عشري أو الثماني إلى العشري، يتم ضرب قيمة كل خانة بقيمة موضعها ثم يتم جمع النتائج. على سبيل المثال:

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

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

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

الثمانية بتات تتبعها 4 بتات، ثم اثنين بت، ثم واحد بت. وتستمر البتات الكسرية في النمط الذي تحدده البتات الصحيحة. البت التالي هو نصف بت، ثم ربع بت، ثم ⅛ بت. على سبيل المثال:
بت عدد صحيحكسور بت0.500=1⁄2=00000000 00000000.10000000 000000001.250=1+1⁄4=00000000 00000001.01000000 000000007.375=7+3⁄8=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:Sx10x9x8x7x6x5x41 بايت:x3x2x1x0m51m50m49m482 بايت:وm47m46m45m44m43m42m41m40بايت 3:m39m38m37m36m35m34m33m32بايت 4:m31m30m29m28m27m26m25m24بايت 5:m23m22m21m20m19m18m17m16بايت 6:m15m14m13m12m11m10m9m8بايت 7:m7m6m5m4m3m2m1m0
حيث "S" يدل على البت المخصص للإشارة، "x" يدل على الأس، و "m" يدل على البتات التي تمثل المعاملات.عندما  يتم استخراج البتات، يتم تحويلها بهذه الحسابات:

 <علامة> × (1 + <معاملات>) × 2<الأس> - 1023

هذا المخطط يوفر أرقام صحيحة إلى حوالي 15 من الأرقام العشرية التالية، بمجموعة مدى الأرقام التالية:
الحد لأقصىالحد الأدنىموجب1.797693134862231 E+3084.940656458412465 E-324سالب -4.940656458412465 E-324 -1.797693134862231 E+308
هذه المواصفات تحدد أيضا عدد من القيم الخاصة الغير معرفة، وهي شائغة باسم NaNs ، «ليس عددا». وتستخدم هذه القيم في البرامج لتعيين العمليات الغير صالحة ومثل ذلك.

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

 <علامة> × (1 + <كسور معاملها>) × 2<الأس> - 127

مما يؤدي إلى المدى التالي من الأرقام:
الحد الأقصىالحد الأدنىموجب3.402823 E+382.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 ...

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

تصنيف:أنظمة عددية
تصنيف:حسابيات حاسوبية