كيف يتم تمثيل البيانات داخل الحاسوب؟ - الجزء الأول
المعلوماتية >>>> عام
Image: http://www.bbc.co.uk/education/guides/zpfdwmn/revision
الحواسيب أجهزة إلكترونية، وليست ميكانيكية، معنى ذلك أنها تستخدم التيار الكهربائي من أجل تخزين ومعالجة البيانات، صحيح أن بعض أجزائها ميكانية (كالقرص الصلب)، ولكن التخزين والمعالجة تكون إلكترونية.
يسري التيار الكهربائي داخل الحاسوب من خلال مفاتيح (switches)؛ عندما يكون المفتاح مغلقًا يمر التيار، وعندما يكون مفتوحًا لا يمر أي تيار. من أجل معالجة البيانات داخل جهاز الحاسوب، احتجنا إلى طريقة للتعبير عن هذه البيانات من خلال المفاتيح (switches) لذلك تم اختراع نظام العد الثنائي [02] (Binary coding system).
تنتقل البيانات داخل الحاسوب في شكل إشارات كهربائية (إما يوجد إشارة أو لا يوجد) لذلك وجب تحويل جميع البيانات من نص أو صورة أو مقطع صوتي إلى الشكل الثنائي (مجموعة من 0 و1)، وإلا فلن يستطيع الحاسوب فهمها ومعالجتها. [03]
نظام العد الثنائي هو نظامُ عدٍّ رياضي، وطريقةٌ للعدٌّ تماًما مثلنا؛ فنحن نعُّد بأصابعنا العشرة من 0-9 (ربما لأننا نمتلك عشرة أصابع)، كذلك الحال بالنسبة للحاسوب، فهو يمتلك مفاتيح لوصف البيانات، وكل مفتاح يكون في إحدى الحالتين: إما مشغل (1) أو منطفئ (0).
إذا نظرنا إلى تاريخ الحواسيب، نجد أن تطورَ المفاتيح هو ما جعل الحواسيب أكثر سرعة، وأقل حجمًا وثمنًا. في البداية كانت المفاتيح عبارة عن صمامات مُفرّغة (vacuum tubes) بحجم إصبع الإبهام. وفي عام 1950 اُخترع الترانزيستور وتقلص حجمها إلى حجم ظفر الإصبع، وأدى تطوير الدوائر المدمجة في عام 1960 إلى إنتاج ملايين الترانزستورات داخلَ شريحة سيليكون واحدة، مما يعني وجودَ ملايين القاطعات داخل مساحة صغيرة جًدا. في الأسفل صورة توضح تطور المفاتيح من اليمين إلى اليسار: الصمام المفرغ، الترانزيستور ثم شريحة سيليكونية.[02]
Image: http://vikram92dhiman.blogspot.com/2012_09_01_archive.html
البت والبايت: يُعرف البت (bit) الذي هو اختصار لـbinary digit بإحدى الحالتين (0 أو 1)، ويعبّر عن البت الواحد بمفتاح يكون إما في حالة تشغيل أو إيقاف (on / off). ويمكن جمع العديد من البتات في مجموعات أكبر للتعبير عن المعلومة. لأغراض تصميمة تم اعتماد مجموعة من 8 بتات (التي تُعرف بالبايت) كوحدة لقياس البيانات. في الأسفل مثال مبسّط لكيفية تمثيل بايت واحد داخل الحاسوب.[02]
Image: http://homepage.cs.uri.edu/book/binary_data/binary_data.htm
لمعرفة المزيد عن وحدات قياس المعلومات والفرق بين البت والبايت تفقد مقالاتنا الموجودة في الروابط التالية:
هنا
هنا
إذن تقاس البيانات بالبايت، ولكن يجب الأخذ في الحسبان أن محتوى البايت الواحد يمكن أن يعبر عن أكثر من نوعٍ من البيانات، يعتمدُ الأمر على كيفية استعمال الحاسوب لهذه المعلومة. فمثلًا، قيمة البايت: 01000011 يمكن أن تُمثّلَ العدد الصحيح 67، أو الحرف 'C' أو مستوى الديسيبل الـ67 من مقطع صوتي أو درجة القتامة الـ67 لنقطة في صورة أو تعليمة للحاسب كـ: انتقل إلى الذاكرة مثلًا، وأنواع أخرى من البيانات. [02]
تمثيل الأعداد:
يتم تمثيل الأعداد الصحيحة بالعدّ وفق النظام الثنائي، تمامًا مثلما نعدُّ وفق النظام العشري، نبدأ من 0 ثم ننتقل للعدد الموالي، وعندما نستكمل كافة الأعداد العشرية (9)، نستعمل عددين بحيث نضع واحدًا في مرتبة العشرات ونعيد العد من الصفر إلى اليمين فنحصل على العدد 10؛ صفر في مرتبة الآحاد وواحد في مرتبة العشرات. ويليه 11؛ واحد في مرتبة الآحاد، وواحد في مرتبة العشرات، وهكذا. إذا أردنا ثلاثة أرقام نضع رقمًا ثالثًا في مرتبة المئات.[02]
تُستعمل الطريقةُ نفسها في العد الثنائي. في حالتنا لدينا رقمان فقط هما 0 و 1، نبدأ العدَّ من الصفر ثم يليه الواحد، وهنا تنتهي مجموعة الأرقام المتوفرة لدينا، بالطريقة نفسها نستعمل رتبة ثانية لإتمام العد، فنقوم بوضع 1 في رتبة الاثنان ونستكمل العد. هنا يصبح الرقم 2 هو 10 بوضع 1 في رتبة الإثنان و1 في رتبة الواحد وهكذا. [02]
يمثّلُ الجدول التالي بعضَ الأعداد الصحيحة وفق النظام الثنائي:
Image: syr-res.com
تمثيل الكلمات:
في الحاسوب، يمثل كل بايت حرفًا واحدًا، وتُمثّل الحروف بنظام ترميز يسمى آسكي (ASCII1)، الذي يستعمل 7 بتات لكل حرف، حيث يقابل كل حرف قيمته الثنائية من جدول آسكي. مثلا:[03]
الحرف: 'a' تقابله القيمة الثنائية: 0110 0001 (التي تساوي 97 بالنظام العشري في جدول آسكي).
الحرف: 'b' تقابله القيمة الثنائية: 0110 0010 (التي تساوي 98 بالنظام العشري في جدول آسكي).
هناك أيضًا نسخةٌ مطورة عن آسكي تدعى ASCII-8 التي تستعمل 8 بتات بدلًا من 7 وتستطيع تمثيل 256 حرفًا.[02]
يستطيعُ ترميزُ آسكي استيعابَ 128 حرًفا فقط (أو 256 في نسخته الممتدة)، وهذا رقم غير كافٍ بالنسبة للغاتِ التي تستعمل حروفًا غيرَ لاتنية كالعربية واليابانية. لهذا اُبتكر ترميز آخر يسمى "Unicode" لتمثيل كل الحروف والرموز الموجودة لحد الآن.[03]
تمثيل الصور والبيانات التخطيطية:
الصورُ أيضًا بحاجة إلى أن تتحولَ إلى بيانات رقمية حتى تتم معالجتها داخل الحاسوب. [03] تتشكل رسومات الحاسوب من مجموعة من النقط تُعرف بالبكسلات (picture + element = pixels)، حيث يمكن لبايت واحد أن يمثِّلَ بكسلًا من الصورة. تُمثَّلُ الصورة ببايت واحد من أجل الصور البيضاء والسوداء وأكثر في حال الصورة الملونة.
في تمثيل تخطيطي يعرف بـ«التدرج الرمادي»، كل بكسل يمثلُ درجةً من الظل تتدرج من اللون الأبيض إلى الأسود. بما أن 8 بتات تستطيع استيعابَ 256 قيمة (من 0-255)، يستطيع بيكسل مخزن في بايت واحد أن يأخذ 256 تدرجًا لونيًا (مع 0 يمثل اللون الأبيض و255 يمثل الأسود). في ألعاب الفيديو الحديثة والصور عالية الدقة، تستعمل العديد من البايتات لتخزين قيمة بيكسل واحد. [02]
بالنسبة للصور الملونة، يتمُّ تمثيلُ كل بكسل ضمن النظام اللوني RGB الذي يعني أحمر وأخضر وأزرق (Red، Green ، Blue). وبسبب خصائص امتصاص الضوء للعين البشرية، تتشكّلُ الألوانُ نتيجةَ التراكبات المختلفة للألوان الأولية التي هي الأحمر والأخضر والأزرق. إذ يتشكل اللون الأرجواني من تراكب الأحمر والأزرق، واللون الأزرق السماوي من الأزرق والأخضر، واللون الأصفر من الأحمر والأخضر. فيما يتشكّلُ اللون الأبيض من تراكب الألوان الأولية الثلاثة أو بمزج أحد الألوان الثانوية مع اللون الأولي المضاد.[05] يتشكّلُ البكسل الواحد من عدد من البتات، ويختلف العدد بحسب طريقة التمثيل المتبعة، وفيما يلي استعراضٌ لأنواع طرق تمثيل البكسلات الموجودة:
- التمثيل ذو 24 بت: يتمُّ تمثيلُ كل بكسل من الصورة بثلاثة بايتات، بايت للون الأحمر، وبايت للون الأزرق، وبايت للون الأخضر. بما أن البايت الواحد يستطيع استيعابَ 256 قيمة، فبالمجمل يمكن تمثيل ما مجموعه 16 مليون (256x256x256) قيمة لونية.[06]
Image: http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/
- التمثيل ذو 32 بت: مشابهٌ تمامًا للتمثيل السابق باستثناء وجود بايت إضافي يُعرفُ بالمكوّن آلفا (alpha component) الذي يمثل درجةَ شفافية الصورة.[06]
Image: http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/
- التمثيل ذو 16 بت: يمثَّلُ كل بكسل بـ16 بت (أو 02 بايت). حيث تسند 05 بتات للون الأحمر، و06 بتات للون الأخضر، و05 بتات للون الأزرق. وبهذا يصبح العدد الكلي للألوان الممكن تمثيلها 65،000 لون (256x256).
Image: http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/
التمثيل ذو 8 بتات: في هذا التمثيل يتمُّ اختيار 256 صيغة لونية ذات التمثيل 24 بت (يمكن استعمال تمثيل 32 بت أو تمثيل 16 بت) من مجموع 16 مليون قيمة لونية. يسمى الـ256 لون بـ لوحة الألوان، حيث يكون كل بكسل من الصورة مُمثلًا ببايت واحد يعبر عن موضع اللون في لوحة الألوان (كما هو موضح في الصورة بالأسفل). عند تخزين الصورة، تخزن مواضع كل بكسل من الصورة ذات الثماني بتات مع لوحة الألوان مما ينجم عنه زيادة حجم الصورة.[06]
Image: http://homepage.cs.uri.edu/book/binary_data/binary_data.htm
فيما يلي مثال عن صورة بلوحة لونية ذات 5 بتات و7x5 بكسل:
Image: http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/
إذن فالصور ما هي إلا مصفوفاتٌ لونية ثنائية الأبعاد، حيث يمثل كل لون لأحد الطرق المذكورة أعلاه، (8، 16، 24 أو 32 بت). تشغَلُ الصورُ المُمثلةُ بهذه الطريقة مساحةً كبيرة وتسمى صورًا خامًا. فمثلًا تشغلُ صورةً بأبعاد 600x800 بكسل ممثلة بـ32 بت مساحة تساوي:
MB 1.92 = (400*800 pixel) x (4 byte)
لهذا ابتكرت عدةُ خوارزميات تقوم بضغط الصورة ولتقليص حجمها، وتستعمل العديد من الصيغ (تمامًا مثل ترميز آسكي للحروف والأرقام) [06]. واحدة من أبرز وأقدم الصيغ الأصلية التي لا تزال قيد الاستعمال هي صيغة (البيتماب) bitmap أوbmp. تخزنُ البيتماب كل بيكسل من الصورة ما ينتجم عنه ملفات بأحجام كبيرة، حيث يمكن لرسم بسيط بصيغة بيتماب أن يتجاوزَ حجمه العديد من الميغابايتس.
توجد صيغتان أخريتان تستعملان عبر النت هما 2JPEG و3GIF. وهي صيغ مضغوطة، يعني هذا أنه بدلًا من تخزين كل بكسل من الصورة، تخزن هذه الصيغ أنماطَ البكسلات. بتخزين أنماط البكسلات وليس البكسلات كلها، تشغل كل من صيغ JPEG وGIF مساحاتٍ أقلَّ من نظيرتها البيتماب ما يجعلها الاختيار الأمثل في تصميم مواقع الإنترنت أو إرسالها عبر البريد الإلكتروني.[02]
لم تنتهِ قصتنُا إلى هذا الحدّ، في الجزء التالي، سنتحدث عن كيفية تمثيل الصوت والبرامج، فانتظرونا!