XMAKYNA Blog

EngineeringFoundations

كيف تحوّل أجهزة الكمبيوتر الرقمين 0 و1 إلى كلمات وصور

Language: Arabic
Dark schematic of an integrated circuit representing binary information and the path from zeros and ones to meaningful output.

اكتب الحرف الإنجليزي الكبير ⁦X⁩ في مستند فارغ. يظهر فوراً على الشاشة. تراه حرفاً مألوفاً، وربما بداية كلمة. لكن لوحة المفاتيح لم ترسل رسماً مصغّراً للحرف ⁦X⁩ عبر الكمبيوتر. ففي المسافة بين إصبعك والشاشة، تحوّل نشاط كهربائي إلى معلومات، وفُسّرت تلك المعلومات، ثم صدرت إلى الكمبيوتر تعليمات برسم شيء يمكنك التعرّف إليه.

في مقالنا السابق، كيف تعمل أجهزة الكمبيوتر: فاينمان وموظف الأرشفة فائق السرعة، استخدمنا نموذج ريتشارد فاينمان لموظف يتبع تعليمات ويقرأ قيماً من أدراج مرقّمة. وشرحنا به كيف ينجز الكمبيوتر أعمالاً معقّدة عبر سلسلة من العمليات البسيطة. والآن سننظر عن قرب إلى ما تحتويه تلك الأدراج، وكيف تستفيد الآلة الإلكترونية من محتوياتها. تبدأ الإجابة برمزين: 0 و1.

مفتاح واحد يمكنه تمثيل بت واحد

تخيّل مفتاح إضاءة. لأغراض شرحنا، له وضعان: إيقاف وتشغيل. يمكننا تسمية هذين الوضعين بأي اسم، لكن استخدام 0 و1 مناسب. والاختيار بين احتمالين يمثّل بتّاً واحداً، وهي تسمية مختصرة لـ«رقم ثنائي». يستطيع البت الواحد التمييز بين حالتين، لكنه لا يكفي وحده لمعرفة اسم شخص أو وصف صورة فوتوغرافية.

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

أربعة بتات تكفي للعدّ

تخيّل أربعة مفاتيح متجاورة. أعطها القيم 8 و4 و2 و1، من اليسار إلى اليمين. عندما يكون المفتاح في وضع التشغيل، تُحتسب قيمته؛ وعندما يكون متوقفاً، لا يضيف شيئاً. اضبط المفاتيح على ⁦0 1 0 1⁩: إيقاف، تشغيل، إيقاف، تشغيل. قيمة المفتاح الثاني 4، وقيمة الرابع 1. وبجمعهما نحصل على ⁦4 + 1 = 5⁩.

استكشف البتاتاضغط على رقم لتبديل حالته بين 0 و1.
النتيجة العشرية5
4 + 1 = 5
جرّب تشغيل جميع البتات.
الشكل 1. يمكن لأربع خانات ثنائية، قيمها 8 و4 و2 و1، أن تمثّل أي عدد من 0 إلى 15. النمط الابتدائي ⁦0101⁩ يمثّل العدد 5.

جرّب ترتيباً مختلفاً. يمثّل النمط ⁦0111⁩ العدد 7، ويمثّل ⁦1111⁩ العدد 15. هذه هي الطريقة الثنائية لكتابة الأعداد باستخدام 0 و1 فقط. وهي تقوم على فكرة نظام العدّ العشري المألوف، لكن قيمة كل خانة تتضاعف كلما اتجهنا يساراً بدلاً من أن تزيد عشرة أضعاف.

لكل بت حالتان ممكنتان، 0 أو 1. ومع أربعة بتات، يصبح لدينا ⁦2 × 2 × 2 × 2 = 16⁩ نمطاً ممكناً. أما ثمانية بتات، التي تُجمع عادةً في بايت واحد، فتتيح 256 نمطاً. ويمكننا تمثيل أعداد أكبر بإضافة المزيد من البتات، من دون الحاجة إلى مكوّنات إلكترونية تميّز حالات جديدة. والعدّ ليس سوى أول استخدام مفيد لهذه الأنماط.

يمكن لعدد أن يمثّل حرفاً

لنعد إلى الحرف ⁦X⁩ على الشاشة. لكي نخزّن حرفاً، نحتاج إلى قاعدة تربط بين رقم وهذا الحرف. ويقدّم معيار قديم لتمثيل النصوص اسمه ⁦ASCII⁩ مثالاً واضحاً: فهو يخصّص العدد 88 للحرف الإنجليزي الكبير ⁦X⁩.

يمكن كتابة 88 بالنظام الثنائي على الصورة ⁦01011000⁩. والصفر في البداية ليس سوى خانة إضافية لعرض رمز ⁦ASCII⁩ ذي السبعة بتات في ثماني خانات. تقع الأرقام 1 في الخانات التي قيمها 64 و16 و8، ومجموعها 88. فإذا تعامل البرنامج مع هذه البتات باعتبارها عدداً، كانت قيمتها ثمانية وثمانين. أما إذا فسّرها وفق معيار ⁦ASCII⁩، فهي تمثّل الحرف ⁦X⁩.

نمط واحد، ومعنياناضغط على أي بت أو جرّب حرفاً مختلفاً.
كعدد88بالنظام العشري
وفق ASCIIXتفسير الحرف

البتات نفسها، بعد تفسيرها وفق معيار ASCII.

الشكل 2. يمثّل النمط ⁦01011000⁩ العدد 88 إذا قرأناه عدداً ثنائياً عادياً، ويمثّل الحرف ⁦X⁩ إذا قرأناه وفق معيار ⁦ASCII⁩.

لا يوجد في هذا النمط ما يشبه شكل الحرف ⁦X⁩. وإنما تنشأ الصلة بينهما من القاعدة المتّفق عليها لقراءته.

تحتاج أجهزة الكمبيوتر الحديثة إلى تمثيل حروف ورموز أكثر بكثير مما يغطيه ⁦ASCII⁩، بما في ذلك أنظمة الكتابة حول العالم والرموز التعبيرية. لذلك تستخدم معايير أوسع، أبرزها ⁦Unicode⁩، وطرقاً مختلفة لترميز الحروف في صورة بايتات. تختلف التفاصيل، لكن المبدأ واحد: تكتسب القيم المخزّنة معناها من القواعد المتّفق عليها لتفسيرها. والكلمة سلسلة من الحروف الممثّلة بهذه الطريقة؛ فيستطيع البرنامج تخزين رموز ⁦B⁩ و⁦O⁩ و⁦X⁩ وقراءتها بالترتيب، من دون الحاجة إلى مكونات خاصة بكلمة ⁦BOX⁩.

ينطبق المبدأ نفسه على الألوان. فمن الطرق الشائعة لوصف بكسل على الشاشة استخدام ثلاثة أعداد تحدّد مقدار الضوء الأحمر والأخضر والأزرق. وفي مثال مألوف يستخدم ثمانية بتات لكل لون، تعني القيم (255, 0, 0) اللون الأحمر: المكوّن الأحمر بأقصى قيمته، بينما الأخضر والأزرق عند الصفر. ولو استخدمنا قاعدة مختلفة لتغيّر معنى مجموعة الأعداد نفسها. وهكذا يمكن تخزين النصوص والصور باستخدام الآليات الإلكترونية الأساسية ذاتها، من دون أن يكونا النوع نفسه من المعلومات.

أصبح لدينا الآن تصور عمّا قد يجده موظف الأرشفة في أحد الأدراج: قيمة تكتسب معنى بحسب الطريقة التي تتطلّب المهمة الحالية تفسيرها بها. لكن تخزين القيمة ليس العمل عليها. ولكي يحدث ذلك، يحتاج الكمبيوتر إلى تعليمات.

كيف تؤدّي الدوائر الإلكترونية العمل

تحتفظ الذاكرة بالمعلومات التي يحتاج إليها البرنامج أثناء تشغيله، مثل الأدراج في نموذج فاينمان. وتنفّذ وحدة المعالجة المركزية (⁦CPU⁩) التعليمات، وتجري العمليات الحسابية والمقارنات، وتساعد في تحديد ما يحدث بعد ذلك. وفي أجهزة الكمبيوتر الحديثة، يتوزّع العمل على دوائر إلكترونية كثيرة، لكن فكرة جلب قيمة، وإجراء عملية عليها، ثم تسجيل النتيجة، تظل مفيدة لفهم ما يحدث.

يستطيع الكمبيوتر جمع الأعداد بالنظام الثنائي. فمثلاً، يمثّل ⁦0101⁩ العدد 5، ويمثّل ⁦0001⁩ العدد 1. وإذا جمعناهما حصلنا على ⁦0110⁩، أي العدد 6.

اجمع البتاتغيّر العددين الثنائيين ثم شاهد المجموع.
العدد الأول
5عشري
+
العدد الثاني
1عشري
المجموع الثنائي
6عشري
5 + 1 = 6 بالنظام العشري
سلوك الحمليوجد حمل إلى خانة 2s.
جرّب 7 + 1 أو 15 + 1 لإظهار البت الخامس.
الشكل 3. غيّر أيّاً من المدخلين ذوي الأربعة بتات، واجمع القيمتين الثنائيتين واقرأ النتيجة. يظهر المجموع دائماً في خمس خانات متحاذية لتكون الخانة الإضافية جاهزة عند الحاجة إليها.

تُمثَّل التعليمات أيضاً بالأصفار والآحاد. تحدّد بعض البتات العملية التي سينفّذها المعالج، بينما تحدّد بتات أخرى القيم المطلوبة أو مواضع وجودها، مثل سجلّ داخل المعالج (مساحة تخزين صغيرة). ونطلق على هذه العمليات أسماء قصيرة: ⁦MOVE⁩ لنسخ قيمة، و⁦ADD⁩ لجمع أعداد، و⁦COMPARE⁩ لمقارنة قيم، و⁦JUMP⁩ للانتقال إلى تعليمة أخرى. أما ⁦CALL⁩ فتبدأ مجموعة منفصلة من التعليمات، ثم تعيد ⁦RETURN⁩ المعالج إلى ما كان ينفّذه بعد انتهائها. وباتباع هذه التعليمات، مع تكرار بعض الخطوات أو تغيير المسار أحياناً، ينفّذ المعالج البرنامج.

هنا تلتقي البرمجيات بالمكونات الإلكترونية: فالتعليمات تحدّد العمل الذي تؤدّيه الدوائر.

تذكّر موظف الأرشفة في نموذج فاينمان. يتبع الموظف التعليمات ليصل إلى الدرج المرقّم الصحيح، ويعمل على محتوياته، وقد ينتقل أحياناً إلى خطوة مختلفة بدلاً من متابعة الخطوة التالية. يتبع المعالج الفكرة الأساسية نفسها، فينفّذ البرنامج عبر سلسلة من العمليات البسيطة.

يترك هذا المثال تفاصيل هندسية كثيرة خارج الشرح، منها كيفية تنظيم المعالجات لمساحات العمل داخلها وتنسيق عملياتها العديدة. ولا نحتاج إلى كل ذلك لفهم العلاقة الأساسية: يخزّن الكمبيوتر تمثيلات للمعلومات، ويتبع تعليمات تحدّد ما يفعله بها، ويسجّل تمثيلات جديدة بوصفها نتائج.

كيف يظهر الحرف ⁦X⁩ على الشاشة

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

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

إذا غيّرت الخط، فقد يتغيّر شكل ⁦X⁩ كثيراً. لم تتغيّر هوية الحرف؛ الذي تغيّر هو المعلومات والتعليمات المستخدمة في رسمه. وكذلك لن يظهر العدد 88 على هيئة ⁦X⁩ لمجرد تخزين تلك البتات في مكان ما. فلا بد أن يختار برنامج تفسيرها كنص، ثم يرتّب عرض النص على الشاشة.

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

تنطبق الفكرة نفسها على الصور والصوت

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

0 أسود128 رمادي255 أبيض
مثال للتدرّج الرمادي. في صورة تقليدية ذات ثمانية بتات لكل بكسل بتدرّج الرمادي، يمثّل 0 الأسود، و128 الرمادي، و255 الأبيض، وتقع درجات أخرى بين هذه القيم.

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

كيف يتحوّل الصوت إلى أعداد

قياسات ضغط الهواء بمرور الوقت

مثال للموجات الصوتية. تشير كل نقطة إلى قياس. وتمثّل التذبذبات الأكبر فوق الصفر وتحته تغيّرات أكبر في ضغط الهواء.

تختلف هذه الأمثلة في القياسات والقواعد والمعدات. لكنّها جميعاً تعتمد على القدرة الأساسية نفسها: يستطيع الكمبيوتر تمثيل المعلومات بأنماط، وإجراء عمليات على هذه الأنماط وفق تعليمات، واستخدام أجهزة مادية لإنتاج نتيجة. وهذا يكفي لربط الدوائر ذات الحالتين داخل الشريحة بالنصوص والصور الفوتوغرافية والموسيقى في حياتنا اليومية.

عندما تسوء الأمور

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

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

في مقالات لاحقة، سنستكشف كيف تنشأ هذه الإخفاقات، وكيف يعمل المهندسون على منعها أو الحد من عواقبها.

الخلاصة

يسجّل البت الواحد احتمالاً من اثنين: 0 أو 1. وباستخدام عدة بتات، يستطيع الكمبيوتر تمثيل أعداد. ووفق قواعد متّفق عليها لتفسيرها، يمكن لهذه الأعداد أن تمثّل حروفاً وألواناً أو قياسات للصوت. ويتبع المعالج تعليمات للعمل على المعلومات المخزّنة، بينما تربط أجهزة الإدخال والإخراج النظام الإلكتروني بالعالم من حولنا.

تذكّر مرة أخرى الحرف ⁦X⁩ وهو يظهر في مستندك. تأتي هويته من رمز الحرف، وشكله من الخط والبرمجيات التي ترسمه، والضوء الذي تراه من الشاشة. وتعتمد هذه الخطوات كلها على القدرة على تمثيل المعلومات ومعالجتها على نحو موثوق. وفهم هذه السلسلة أنفع من تخيّل أن الكمبيوتر يحتوي داخله على كلمات وصور مصغّرة.