pregnancy

قواعد عامه لمعظم لغات البرمجة (2) الترميز Encoding


اى لغة برمجة تدعم عدد معين من الأحرف و الأرقام و الرموز و التى تستخدم لكتابة الأكواد, ولكن لعل اول درس تم تعليمة لنا فى مجال تكنولوجيا المعلومات هو ان جهازالكمبيوتر و اى آله الكترونية تستطيع التعامل فقط بلغة الآله و التى تتكون من (0, 1) Binary وهو امر يصعب تعلمة لذلك وجدت أنواع التمثيل الأخرى مثلاً النظام السادس عشر Hexadecimal أو النظام الثماني Octal أو النظام العشري Decimal الذي نستخدمه في حياتنا اليومية، وهكذا يمكن أن نمثل الرقم 237 (المكتوب بالنظام العشري) بأكثر من طريقة ففي النظام الثنائي سوف يكون 10011111 أما في النظام السادس عشر سوف يكون 9F أما في الثمانى سوف يكون 159، وكل هذه الطرق تمثل نفس العدد ولكن بتمثيل مختلف ، وفي الغالب نحن نستخدم النظام السادس عشر لأنه مختصر وأسهل من الثنائي. 

و نلاحظ ان بغض النظر عن نوع التمثيل فإن عملية التخزين للبيانات تكون دائما بالنظام الثنائى, هذا بالنسبة للأرقام ولكي نتعامل مع الأحرف Characters فيجب أن تحولها بشكل أو أخر لأرقام يفهمها الحاسب حتى يخزنها بالنظام الثنائي ، ومن هنا وجدت أول طريقة تحويل Mapping من الأحرف الى الأرقام وهو نظام ال ASCII (نسمية Character Set) حيث هو مجرد اسناد رقم لكل حرف حتى يمكن التعامل معه وهكذا الأمر بالنسبة للأحرف الانجليزية وبعض رموز التحكم Control Characters سيتم اسناد رقم لكل منهم في جدول الأسكي.

بذلك نعرف Character Set  على انها مجموعة الأحرف والرموز و الأرقام التى تدعمها لغة برمجة معينة و بالطبع تدعمها الآله. 

ماذا عن ASCII ...؟ ما هو وكيف يتم التعامل معه؟


ASCII هى اختصار الى American Standard Code for Information Interchange و كما ذكرنا هو جدول يمثل به الأحرف و الرموز بألاقام  حتى يستطيع الكمبيوتر التعامل معها فمثلا كما هو موضح بالجدول التالى الحرف الأنجليزى (M) يمثل بالرقم 77 بالظام العشرى.

و بالنظر مرة اخرى الى الجدول نجد انة يتكون من ثلاث مستويات كما يلى:
  • Control Character و هى رموزغير مطبوعة تستخدم للتحكم فى الأجهزة المادية و اعطائها اوامر معينة و هى تأخذ الأرقام من (0) الى (31) بالنظام العشرى و كمثال عليها (الرقم 10 يمثل سطرجديد) و (الرقم 8 يمثل الأمر Back Space) 
  • Low Level و هى الأرقام من (32) الى (127) بالنظام العشرى و التى تمثل بـ (7 بت) بالنظام الثنائى و هى تحتوى على الأرقام من (0) الى (9) و الأحرف الأنجليزية و بعض الرموز الشائع استخدامها.
  • High Level اوتعرف ايضا بـ  Extended ASCII و هى الأرقام من (128) الى (256) بالنظام العشرى و التى تمثل بـ (8 بت) بالنظام الثنائى و هى تستخدم لتمثيل باقى الأحرف والرموزالغير انجليزية.


من ذلك نجد ان عمليات تحويل الحرف الى بتات Bits تسمى Encoding Schema واختصاراً نطلق عليها Encoding, عملية تحويل البتات الى حرف تسمى Decoding وهي العملية العكسية لل Encoding.


كان الـ ASCII هو نظام الترميزالمستخدم و الأكثر شيوعا حتى ظهر نظام Unicode الذى يشمل تقريبا على كل الأحرف للغات العالم و ينقسم الى :
  • UTF-8
  • UTF-16
  • UTF-32 
والذى يكون بطبيعة الأمر متوافق مع ASCII