نُشر هذا المقال للمرة الأولى على مجتمع أسس شهر أكتوبر 2022
مقدمة
في حياتنا الرقمية اليومية، نتعامل كثيرًا مع وحدات قياس البيانات. فمثلا عند تعاملك مع الملفات المُخزَّنة على حاسوبك أو هاتفك (صور، مستندات، ملفات صوتية، فيديوهات…)، أو عند رغبتك في اقتناء أو إصلاح جهاز رقمي أو قطعة من قطع هذا الجهاز (وسيط تخزين خارجي، ذاكرة عشوائية (RAM)، قرص صُلْب (Hard Disk)…)، أو حتى عند شراء أو تجديد اشتراك الإنترنت لديك؛ تسمع كثيرًا كلمتي “بِتْ” و “بَايْتْ” – بالكتابة اللاتينية “Bit” و “Byte” – وأيضا مضاعفاتها العددية كيلوبايت، ميجابايت، جيجا بايت…
في هذا المقال سنتحدث عن هاتين الوحدتين، نشرح مفهومهما، أصل اشتقاقهما، ومجال استخدامهما، ليكون ذلك مقدمة تعريفية لعلوم الحوسبة والتقنية الرقمية.
الأنظمة العددية
سيكون من السهل لشرح وحدات قياس البيانات أن نُعَرِّف بالنظام العددي المستخدم في هذا المجال، وأن نقارنه بنظام عددي نعرفه ونستخدمه يوميًا: إنه النظام العشري – باللغة الإنجليزية Decimal Numeral System –
نظام العدّ العشري
يُعَدُّ نظام العد العشري أكثر الأنظمة العددية استخدامًا وأسهلها، سُمِّيَ بذلك لأن أساس هذا النظام هو الرقم 10، حيث يمثل “الأساس” عدد الأرقام التي يتكون منها أي نظام عدّ. يتكون النظام العشري من 10 أرقام تتغير قيمتها من الرقم 0 إلى الرقم 9. يمكن استخدام هذه الأرقام وتجميعها لنرمز لأي عدد مهما كان كبيرًا.
على سبيل المثال سنأخذ العدد 4375. يحتوي هذا العدد على أربع أرقام يشغل كل منها مرتبة أو خانة معينة نعبر عنها ب: الآحاد (1)، العشرات (10)، المئات (100)، والآلاف (1000)، حيث يُمَثِّلُ العدد 4 خانة الآلاف، ويُمَثِّلُ العدد 3 خانة المئات، ويُمَثِّلُ العدد 7 خانة العشرات، ويُمَثِّلُ العدد 5 خانة الآحاد.
مما سبق يمكننا التعبير عن العدد 4375 رياضيًا بالطريقة الآتية:
(4 * 1000) + (3 * 100) + (7 * 10) + (5 * 1) = 4000 + 300 + 70 + 5 = 4375
يمكننا التعبير أيضا عمّا سبق بطريقة رياضية أخرى تتمثل في استخدام قِوَى العدد 10 – الأُسّ رياضيًا – فمثلا تَتِّمُ كتابة “10 * 10 * 10” باستخدام الأسّ بالشكل: “10³”
سنُمثِّل حينها العدد 4375 بالشكل الآتي:
(4 * 10³) + (3 * 10²) + (7 * 10¹) + (5 * 10⁰) = 4000 + 300 + 70 + 5 = 4375
نظام العدّ الثنائي
نظام العَدِّ العشري ليس نظام العد الوحيد المستخدم في العلوم، فأجهزة الحوسبة مثلا تستخدم نظام العدِّ الثنائي – باللغة الإنجليزية Binary Number System -. سُمِيَّ بذلك لأنه يعتمد على قيمتين اثنتين فقط هما 0 و 1، تمامًا مثل طريقة تسمية نظام العدّ العشري اعتمادًا على عدد الأرقام التي تمثل الأعداد فيه.
يعود سبب استخدام نظام العدّ الثنائي في علوم الحوسبة لكونه أبسط وأسهل نظام عَدٍّ يتوافق مع تقنية الإلكترونيات الحالية، وأيضا لكونه أقل تكلفة من غيره.
سنأخذ على سبيل المثال الرقم 1101. بنفس الطريقة التي استخدمناها مع المثال في نظام العدّ العشري سنُبَسِّط تمثيل العدد 1101 في النظام الثنائي باستخدام “الأساس 2” (بدلا من الأساس 10 في النظام العشري) لنحصل على مقابله بنظام العد العشري:
(1 * 2³) + (1 * 2²) + (0 * 2¹) + (1 * 2⁰) = 8 + 4 + 0 + 1 = 13
عمليًا؛ كُلَّمَا كان عدد الأرقام التي تُمَثِّلُ نظام العدّ صغيرًا؛ كُلَّمَا سَهُلَ علينا عَدُّ الأرقام وتمثيلها في هذا النظام. في نظام العَدِّ الثنائي يمكننا مثلا تمثيل الأعداد من 0 إلى 10 ببساطة عن طريق إضافة الرقم 1 كلَّ مرة للعدد الذي لدينا (بنفس طريقة الجمع في نظام العَدِّ العشري). لنحصل حينها على هذه السلسلة:
الجمع في النظام الثنائي | العدد في النظام الثنائي | المقابل في النظام العشري |
---|---|---|
0 | 0 | 0 |
0 + 1 | 1 | 1 |
1 + 1 | 10 | 2 |
10 +1 | 11 | 3 |
11 + 1 | 100 | 4 |
100 + 1 | 101 | 5 |
101 + 1 | 110 | 6 |
110 + 1 | 111 | 7 |
111 + 1 | 1000 | 8 |
1000 + 1 | 1001 | 9 |
1001 + 1 | 1010 | 10 |
البِت “Bit“
كلمة بِت أو Bit اختصار لعبارة “Binary digIT” -باللغة العربيّة “الرقم الثنائي”-، هي أصغر وحدة مستخدمة لتخزين واستخدام البيانات. يُمَثِّل البِتْ خانة واحدة تُخَزِّن إحدى القيمتين المحتملتين لنظام العدّ الثنائي: إمٌا 0 وإمّا 1. يوافق ذلك وضعي الكهرباء “off” و “on” على الترتيب.
البَايْت “Byte”
يجعل حجم وحدة “البِتْ” الصغير استخدامها في تقنيات الحوسبة صعبا وغير مفيد. لذلك غالبا ما تستخدم هذه التقنيات مجموعات تتكون من 8 بِتْ (8 خانات متتالية). يُطْلَقُ على المجموعة الواحدة منها مصطلح “بَايْتْ”. عندئذ، بدل أن يكون لدينا خانة واحدة تحتمل إحدى القيمتين (0 أو 1)، سيكون لدينا 8 خانات تحتمل 256 قيمة (من 0 إلى 255). إليك بعض الأمثلة:
0 = 00000000
1 = 00000001
2 = 00000010
3 = 00000011
10 = 00001010
100 = 1100100
255 = 11111111
حوسبيًّا، يمكن للبَايْت الواحد تخزين حرف أو عدد أو رمز واحد، مثلا “A” أو “b” أو “8” أو “@”. هذا هو السبب في جعله وحدة أولية معتمدة بدل وحدة “البِتْ”. تتم هذه العملية وفق نظام الترميز المستخدَم في علوم الحوسبة: نظام “ASCII”.
لو أخذنا الأمثلة السالفة الذكر، سيكون تمثيلها كالآتي:
الحرف | ترميز ASCII | نظام العدّ الثنائي |
---|---|---|
A | 65 | 1000001 |
b | 98 | 1100010 |
8 | 56 | 0111000 |
@ | 64 | 1000000 |
وحدات مضاعفات البت والبايت: Kilo و Mega و Giga …
مع تطور تقنية المعلومات واعتمادها في كل المجالات، أصبحنا اليوم نتعامل مع ملفات كبيرة الحجم؛ كبيرةٌ لدرجة أنها تحتاج لملايين أو حتى لبلايين الوحدات من البايت لتخزينها. مثل كل المجالات التي تُستخدم فيها وحدات القياس، دعا هذا التطور في الأحجام لوضع وحدات جديدة من مضاعفات وحدتي “البِتْ” و “البَايْتْ”.
من المؤكد أنك سمعت بوحدات مثل : كيلو (kilo)، ميجا (mega) وجيجا (giga). في الواقع لا تُعَبِّرُ هذه الاستخدامات عن الوحدات الرقمية، بل تُعَبِّرُ فقط عن سابقة الوحدة (باللغة الإنجليزية prefix). كأن تُشير مثلا لمسافة قطعتها بكلمة “كيلو”، لكنك تقصد وحدة قياس المسافات “الكيلومتر”. في النظام الرقمي تُضاف السابقات إلى الوحدتين المستخدمتين “البت” و “البايت” لتنتج لنا وحدات مثل كيلوبِت، ميجابِت، جيجابِت، ووحدات مثل كيلوبايت، ميجابايت، جيجابايت.
على خلاف المتوقع من مفهوم السابقة “كيلو”، يمثل مصطلح “كيلوبايت” حوسبيًّا ما يقابل 1024 بايت أو “2^10” بايت، وليس 1000 بايت. يعود ذلك لكون تقنيات وأجهزة الحوسبة تستخدم نظام العد الثنائي (الأساس 2) وليس النظام العشري (الأساس 10) مثلما ذكرنا آنفا.
الالتباس الذي يحدث بسبب الفرق بين 1000 و القيمة 1024 لا يَمَسُّ المستخدم النهائي فقط، فمنذ بداية ظهور الحوسبة، استُخدِم نظامان مختلفان للقياس لوصف نفس الوحدة. على المستوى الأكاديمي وفي أنظمة التشغيل يتم العمل بنظام القياس الثنائي كما تستوجب تقنيات الحوسبة. أما في بيئات الإنتاج والصناعة فيستخدم أغلب مصنعي العتاد نظام القياس العشري. زاد التطور التقني المتسارع الالتباسَ يومًا بعد يوم بسبب الفرق الكبير في الأحجام بين وحدات النظامين المختلفتين.
لحل هذه المشكلة ظهرت سابقات (وحدات) جديدة بمصطلحات مختلفة، يُقصد بهذا الاشتقاق التمييز بين النظام الدَّوْليّ للوحدات (مضاعفات 10) وبين نظام القياس المستخدم في الحوسبة (مضاعفات 2).
في الجدول الذي يلي، سنشرح وحدات نظامي القياس المختلفين.
الوحدة (النظام الدولي للوحدات SI) | الرمز (الاختصار) | القيمة (سابقة عشرية) | الوحدة (اللجنة الكهروتقنية الدولية IEC) | الرمز (الاختصار) | القيمة (سابقة ثنائية) |
---|---|---|---|---|---|
kilobyte | KB | 10^3 أو 1000 | kebibyte | KiB | 2^10 أو 1024 |
megabyte | MB | 10^6 أو 1000^2 | mebibyte | MiB | 2^20 أو 1024^2 |
gigabyte | GB | 10^9 أو 1000^3 | gebibyte | GiB | 2^30 أو 1024^3 |
terabyte | TB | 10^12 أو 1000^4 | tebibyte | TiB | 2^40 أو 1024^4 |
petabyte | PB | 10^15 أو 1000^5 | pebibyte | PiB | 2^50 أو 1024^5 |
exabyte | EB | 10^18 أو 1000^6 | exbibyte | EiB | 2^60 أو 1024^6 |
zettabyte | ZB | 10^21 أو 1000^7 | zebibyte | ZiB | 2^70 أو 1024^7 |
yottabyte | YB | 10^24 أو 1000^8 | yobibyte | YiB | 2^80 أو 1024^8 |
إذن، ما الالتباس الذي يصادف المستخدم النهائي؟
بعد أن اطلعت على الجدول الماضي، ربما تبادر إلى ذهنك أنك قد استخدمت أو رأيت كلا نظامي القياسين المختلفين. هذا صحيح، قد تستخدم بعض برمجيات إدارة وسائط التخزين ومراقبة النظام والموارد مثلا وحدة GB، فيما تستخدم أخرى وحدة GiB. ربما لا ينتبه المستخدم لكون الوحدتين مختلفتين أو أن اختصارًا تمثيلهما مختلف كتابةً، بل قد يظن أن النظام أو البرمجيات لا تعطي نفس القيمة مع أن وسيط التخزين واحد أو أن الذاكرة العشوائية واحدة، فلماذا اختلفت القيمتان؟ في الواقع لم تختلف القيم، بل الوحدة هي ما اختلفت هنا.
سنضرب مثالًا عمليًا هنا، ليكن لديك قرص صلب تشير مواصفاته التقنية إلى أن سَعَة تخزينه 1 تيرا بايت أو 1000 جيجابايت. لا تستغرب إذا وجدت برنامَج إدارة الأقراص يعطي قيمة 931 عند عرض هذا القرص، فيمَا يعطي برنامَج آخر القيمة 1000 (قد يبدو أن هذه هي الطريقة الصحيحة والوحيدة)، لا تستغرب أيضا إن وجدت برنامَج مراقبة النظام والموارد يشير إلى القيمة 7.4 ليُعبِّر عن حجم الذاكرة العشوائية، في الوقت الذي تعلم أن حجمها هو 8.
فلنشرح الآن الاختلاف حسابيا:
مُصَنِّع الأقراص الصلبة سيستخدم وحدة GB ليقدم لك قرصا صلبا سعته 1000 جيجا بايت، إذا حولنا هذه القيمة للوحدة الأساسية “البايت” سنجري العملية الحسابية الآتية بالاعتماد على المضاعفات أو السابقات العشرية:
1000 * 1000 * 1000 * 1000 = 1000000000000
لدينا إذن 1000 جيجا بايت تساوي 1000000000000 بايت.
إذا حولنا النتيجة السابقة إلى وحدة “الجيبي بايت” سنجري العملية الحسابية الآتية بالاعتماد على المضاعفات أو السابقات الثنائية
1000000000000 ÷ 1024 ÷ 1024 ÷ 1024 = 931.322574615
نستنتج حينها أن 1000 جيجا بايت تساوي 931 جيبي بايت، هي إذن نفس القيمة التي قد تظهر لك في بعض حالات الاستخدام.
خاتمة
بوصولنا لهذا الجزء من المقال نكون بحمد الله قد شرحنا وفصلنا ما ارتينا أن من الضروري للمستخدم أو للمتعلم الاطلاع عليه من أساسيات ابتدائية في وحدات علوم الحوسبة. سيعتمد إذن مجال دراستك أو عملك التقني والحوسبي أو حتى استخدامك اليومي العادي على وحدات تخزين البيانات ومضاعفاتها. لذلك لا تنس فضلا حفظ هذا الدليل التعريفيّ لديك ومشاركته مع معارفك وعلى مواقع التواصل لتعميم الفائدة قدر المستطاع.
المصادر
- مقال تعليمي “نظام العدّ الثنائي” – منصة Cutemath –
- درس “البت والبايت” – موقع جامعة ستانفورد التعليمي –
الترخيص
يخضع هذا المقال لترخيص المشاع الإبداعي: CC-BY-SA 4.0