إذن، فكيف يتم تحديد قصد المستخدم ( الرقم "65" أم الحرف "A") ؟!
تقع مسؤولية تحديد قصد المستخدِم على نوع البرنامج المستخدَم ولا علاقة للأجزاء المادية للحاسب (hardware) بهذا الأمر، فلو افترضنا أنّ مبرمجًا أراد إنشاء برنامج، وكتب في ثناياه ما يلي:
int x ;
تقع مسؤولية تحديد قصد المستخدِم على نوع البرنامج المستخدَم ولا علاقة للأجزاء المادية للحاسب (hardware) بهذا الأمر، فلو افترضنا أنّ مبرمجًا أراد إنشاء برنامج، وكتب في ثناياه ما يلي:
int x ;
في هذه الحالة، سيتم حجز مساحة من الذاكرة للمتغيّر "x"، وهذه المساحة ستكون مخصصة لعدد صحيح فقط، ولو تم تعيين قيمة المتغير بالعدد "65"، فلا يمكن أن يحصل التباس حول مقصد المستخدِم، بما أن المساحة المحجوزة للمتغيّر مخصّصة أصلًا لعدد (int) بناءً على ما أراده المبرمج عبر برنامجه.
ولو أن ذلك المبرمج كتب:
char x;
فسوف يحدّد البرنامج (لاحظ من الذي يحدد: البرنامج) المساحة المحجوزة لتعبّر عن حرف، ولو عُيِّنَت قيمة المتغيّر بـ "A"، فلن يتم تفسيرها كعدد (65)، والسبب هو تحديد نوع المتغيّر بـ "char".
char x;
فسوف يحدّد البرنامج (لاحظ من الذي يحدد: البرنامج) المساحة المحجوزة لتعبّر عن حرف، ولو عُيِّنَت قيمة المتغيّر بـ "A"، فلن يتم تفسيرها كعدد (65)، والسبب هو تحديد نوع المتغيّر بـ "char".
إذن، فإنّ مهمّة تحديد التمثيل المناسب للترميز الثنائي تقع على عاتق البرنامج (بحسب ما حدد له المبرمج)، وفي كلّ مرّة يتم فيها تشغيل البرنامج، سيتم استدعاء تعليماته إلى ذاكرة "RAM"، وتخصيص مساحة لكل متغيّر مع تحديد نوع القيمة المناسبة لكل متغيّر (int OR char) بحسب تعليمات البرنامج.
الخلاصة:
الحاسب لا يعرف غير الترميز الثنائي "01000001"، ومسألة تفسير ما إذا كان هذا الترميز يشير إلى الرقم "65" أو حرف "A"، تعتمد على "ماذا يريد البرنامج؟"، فهو من سيقول للمعالج: "هذا الترميز يشير إلى حرف وليس إلى رقم، وذاك الترميز يشير إلى رقم وليس إلى حرف"، وقس على ذلك.
انتهى.
الحاسب لا يعرف غير الترميز الثنائي "01000001"، ومسألة تفسير ما إذا كان هذا الترميز يشير إلى الرقم "65" أو حرف "A"، تعتمد على "ماذا يريد البرنامج؟"، فهو من سيقول للمعالج: "هذا الترميز يشير إلى حرف وليس إلى رقم، وذاك الترميز يشير إلى رقم وليس إلى حرف"، وقس على ذلك.
انتهى.
جاري تحميل الاقتراحات...