نبذة عن أنظمة الأرقام Decimal و Hexadecimal
قد يتساءل البعص ما هو أصل الكلمة digit؟ أقول أصلها قادم من الكلمة اللاتينية digitus وتعني الأصبع. وبمرور الزمن ونظراً للحاجة الماسة إليه، تطور مفهوم الحساب لدا الناس بحيث أخذوا يشيرون إلى الأصابع أو digits على أنها أرقام numbers. ثم أخذوا يتعلمون العد بإستخدام الأصابع، ومن هنا يُعتَقَد أن أصل النظام العشري Decimal الذي نألفه كثيراً قادم من فكرة الأصابع العشرة! فنظام Decimal أو ما يسمى بنظلم الأرقام للأساس 10، هو نفس النظام الذي نبدأ مشوارنا منذ الصغر في تعلمه، فهو يبدأ من الصفر كأول رقم وينتهي ب 9 ثم يعيد هذا النظام نفسه إبتداءاً من 10 ...19 ثم يعيد نفسه تارة أخرى وهكذا يستمر بنفس المنوال.
يعتبر Hexadecimal أو ما يعرف مختصراً ب Hex من أنظمة الأرقام الغير المسموع بها كثيراً خارج عالم برمجة الكمبيوتر. ولكن في الحقيقة يعتبر من أهم أنظمة الأرقام. فلو أردت تعلم لغة البرمجة C أو assembly وحتى QB على ما أعتقد، فلن تصبح عملية التعلم سهلة إلا بإمتلاك إلمام كاف بنظام الأرقام Hex. وكما لنظام Decimal الأساس 10 فإن لنظام Hexadecimal الأساس 16: ولكن ما هو أصل الأساس 16؟ فلو قمنا بتجزئة كلمة Hexadecimal إلى Hexa والذي يمثل رقم 6 في اللاتيني و decimal والذي يمثل رقم عشرة لأصبح أصل الأساس جلياً لنا.
صوره لانظمة الارقام
لو تأملنا الجدول أعلاه، لرأينا أن النظامين متشابهين تماماً إلى حد ومن ضمنها الرقم 9، بعد ذلك يبدأ الإختلاف. فمثلما يعيد نظام Decimal نفسه من 10 فإن نظام Hex يعيد نفسه من 16 وهكذا. وكما ترون فإن الأرقام من 10 إلى 15 تمثل في نظام Hex بالأحرف من A إلى F، أي بدلاً من أن نتعامل مع رقم مكون من 2 digits سنتعامل في نظام Hex بحرف. قد يتساءل البعض لماذا هذا التعقيد؟ لماذا لا يتم البقاء على نظام Decimal الذي نألفه، أقول فائدة نظام Hex ستبدو أكثر جلاءاً عندما نتعامل مع الأرقام الكبيرة جداً حيث سيتم التعامل مع عدد من الأحرف والأرقام مجتمعين معاً بدلاً من رقم طويل مكون عدد كبير من ال digits.
أمثلة:
نقوم بتحويل الرقم 75 من نظام Decimal إلى Hex وهو محور إهتمامنا
1- نقسم الرقم 75 على 16 والنتيجة يجب أن تكون رقماً صحيحاً، وعليه سيكون حاصل القسمة 4 والباقي 11
2- ومن خلال إجراء مقارنة بين الرقم 11 الذي يمثل الباقي وجدول المقارنة أعلاه لوجدنا أنه يساوي الحرف B في نظام Hex
3- وعليه سيكون الرقم 75 في نظام decimal يساوي 4B في نظام Hex.
نأخذ مثالاً آخر: تأمل الرقم مثلاً 127
نقسم الرقم 127 على 16 فنحصل على 7 كرقم صحيح والباقي 15. ومن خلال جدول المقارنة أعلاه نجد أن الباقي 15 يساوي F في Hex وعليه ستكون النتيجة النهائية:
127 في نظام Decimal يساوي 7F في نظام Hex.
نأخذ مثالاً آخر: مثلاُ الرقم 500
نقسم أولاً على 16 فنحصل على 31 كرقم صحيح و4 كباقي، وبما أن ناتج القسمة والذي هو الرقم الصحيح 31 هو أكبر من 16، إذن نقسمه مرة أخرى على 16 فنحصل على 1 كرقم صيحح والباقي 15. والآن لدينا باقيين، 4 من القسمة الأولى و15 من القسمة الثانية، الباقي الأول والذي هو 4 يبقى كما هو لأنه أقل من عشرة، بينما الباقي الآخر الذي هو 15 وبمقارنته مع جدول المقارنة أعلاه، نجد أنه يساوي الحرف F، لذلك ستكون النتيجة النهائية:
500 كرقم Decimal يساوي 1F4 في Hex
لاحظ أخي القارئ أن الباقي الأول والذي هو 4 جاء أول رقم من اليمين في النتيجة النهائية، أما الباقي الثاني والذي هو 15 أو الحرف F جاء ثانياً من اليمين بينما حاصل القسمة والذي هو الرقم 1 يأتي ثالثاً.
أسئلة:
1- كيف يتم تحويل الأرقام التالية إلى Hex وبشيء من التفصيل:
255، 256، 512، 768، 1024، 2048، 4096، 8192
2- هل توجد أنظمة أرقام أخرى وإن وجدت لماذا لا تستخدم على نطاق واسع بالمقارنة مع نظام Hex في عالم الكمبيوتر
3- كيف يتم التحويل العكسي للأرقام من Hex إلى Decimal
4- هل أن نظام Hex حساس بالنسبة للأحرف الكبيرة Capitals والأحرف الصغيرة smalls