موقف من الحياة اليومية#
تخيّل إنك إنت وصاحبك ساكنين في عمارتين قصاد بعض، واتفقتوا تبعتوا رسايل لبعض بالليل بلمبة في الشباك.
لو عندك لمبة واحدة، تقدر تقول حاجتين بس: منورة يعني «تعالى»، ومطفية يعني «ما تجيش».
طيب لو عندك لمبتين؟ يبقى عندك 4 حالات: الاتنين مطفيين، الأولى بس منورة، التانية بس منورة، الاتنين منورين. يعني 4 رسايل مختلفة.
ولو 3 لمبات؟ هتلاقي إن عندك 8 رسايل.
مبروك: إنت كده فهمت إزاي الكمبيوتر بيخزّن كل حاجة، من الأرقام للصور للأفلام.
خلاصة سريعة#
- الكمبيوتر بيخزّن كل البيانات على شكل 0 و1 بس، وده اسمه النظام الثنائي (Binary (Base-2) · النظام الثنائينظام عدّ يستخدم رقمين فقط هما 0 و1، وكل خانة فيه تساوي ضعف الخانة التي على يمينها. وهو النظام الذي يخزّن به الحاسوب البيانات.عرض في القاموس).
- البت (Bit (Binary Digit) · البتأصغر وحدة لتخزين المعلومات في الحاسوب، وقيمتها إما 0 أو 1.عرض في القاموس) هو أصغر وحدة، وقيمته يا 0 يا 1، زي لمبة يا مطفية يا منورة.
- البايت (Byte · البايتمجموعة من 8 بتات تُعامل كوحدة واحدة، ويمكنها تمثيل 256 قيمة مختلفة من 0 إلى 255.عرض في القاموس) عبارة عن 8 بت، وبيقدر يمثّل 256 قيمة مختلفة (من 0 لـ 255).
ببساطة#
فكّر في كل بت كأنه لمبة: مطفية تبقى 0، ومنورة تبقى 1.
لمبة واحدة بتدّيك حالتين. وكل ما تزوّد لمبة، عدد الحالات بيتضاعف: لمبتين = 4، و3 لمبات = 8، و4 لمبات = 16.
والكمبيوتر جواه عدد ضخم من «اللمبات» الصغيرة دي. ومن تركيباتها المختلفة بيكتب أي رقم أو حرف أو صورة.
بالتفصيل#
ليه 0 و1 بالذات؟#
جوه الكمبيوتر فيه عدد ضخم من المفاتيح الإلكترونية الصغيرة. وكل مفتاح منهم ليه حالتين ثابتتين بس: شغال أو مطفي.
وده بالظبط اللي قاله العالِم Claude Shannon في بحثه الشهير سنة 1948: أي جهاز ليه وضعين ثابتين يقدر يخزّن «بت» واحد من المعلومات.
علشان كده الكمبيوتر بيستخدم رقمين بس: 0 للحالة الأولى، و1 للحالة التانية. وأي حاجة عايز يخزّنها، لازم الأول تتحول لسلسلة من 0 و1.
إحنا بنعدّ إزاي؟ (النظام العشري)#
قبل ما نفهم النظام الثنائي، خلينا نبص على اللي إحنا متعودين عليه. إحنا بنعدّ بـ 10 أرقام (من 0 لـ 9)، وده اسمه النظام العشري.
وكل خانة في الرقم ليها قيمة. خد مثلًا الرقم 352:
| الخانة | الآحاد | العشرات | المئات |
|---|---|---|---|
| قيمة الخانة | 1 | 10 | 100 |
| الرقم فيها | 2 | 5 | 3 |
| الحاصل | 2 | 50 | 300 |
يعني 352 = 300 + 50 + 2. ولاحظ إن كل خانة قيمتها 10 أضعاف اللي على يمينها.
النظام الثنائي: نفس الفكرة بس برقمين#
النظام الثنائي بيشتغل بنفس الطريقة بالظبط، مع فرقين بس:
- فيه رقمين بس: 0 و1.
- كل خانة قيمتها ضعف اللي على يمينها، مش 10 أضعاف.
يعني قيم الخانات من اليمين للشمال: 1، 2، 4، 8، 16، 32، 64، 128… وهكذا.
من ثنائي لعشري: خطوة بخطوة#
خلينا نحوّل الرقم الثنائي 1011 لعشري:
- اكتب قيمة كل خانة فوقها، وابدأ من اليمين بـ 1 وضاعف كل مرة:
| قيمة الخانة | 1 | 2 | 4 | 8 |
|---|---|---|---|---|
| الرقم الثنائي | 1 | 1 | 0 | 1 |
- خد قيم الخانات اللي تحتها 1 بس: 8 و2 و1.
- اجمعهم:
8 + 2 + 1 = 11.
النتيجة: 1011 بالثنائي يساوي 11 بالعشري.
وجرّب بنفسك: 101 = 4 + 1 = 5، و111 = 4 + 2 + 1 = 7.
من عشري لثنائي: خطوة بخطوة#
دلوقتي العكس: عايزين نكتب الرقم 13 بالثنائي.
- دوّر على أكبر قيمة خانة أصغر من 13 أو تساويها: هي 8. حط 1 في خانة الـ 8، والباقي
13 − 8 = 5. - الخانة اللي بعدها 4: 4 أصغر من 5، فحط 1، والباقي
5 − 4 = 1. - الخانة اللي بعدها 2: 2 أكبر من 1، فحط 0.
- آخر خانة 1: الباقي 1، فحط 1، والباقي 0.
النتيجة: 13 بالعشري يساوي 1101 بالثنائي.
اتأكد من النتيجة: 8 + 4 + 1 = 13 ✓
البت والبايت#
- البت هو خانة واحدة: يا 0 يا 1.
- البايت هو 8 بت جنب بعض.
والسؤال المهم: كام قيمة مختلفة يقدر البايت يمثّلها؟
القاعدة بسيطة: كل بت بتزوّده بيضاعف عدد الاحتمالات. يعني لو عندك عدد N من البتات، عندك 2 أس N احتمال (وبتتكتب 2^N):
| عدد البتات | عدد الاحتمالات |
|---|---|
| 1 | 2 |
| 2 | 4 |
| 3 | 8 |
| 4 | 16 |
| 8 (بايت واحد) | 256 |
علشان كده البايت الواحد بيمثّل الأرقام من 0 لـ 255، يعني 256 قيمة. وأكبر رقم فيه هو 11111111 = 255، وأصغر رقم هو 00000000 = 0.
طيب والحروف والصور؟#
الكمبيوتر ما بيفهمش الحروف ولا الصور مباشرة. كل حاجة بتتحول الأول لأرقام، والأرقام بتتخزن بالثنائي.
مثلًا، حسب مقرر CS50 في جامعة Harvard، الحرف الإنجليزي A متفق إنه يتمثل بالرقم 65، واللي بالثنائي هو 01000001. وده موضوع مقال كامل جاي عن ترميز الحروف.
للمتعمقين
أصل كلمة «Bit»
في بحث Claude Shannon سنة 1948 بعنوان «A Mathematical Theory of Communication»، اللي اتنشر في مجلة Bell System Technical Journal، كتب إن وحدة المعلومات لما بنستخدم الأساس 2 ممكن تتسمى «binary digits» أو باختصار bits، وقال إن الكلمة دي اقترحها J. W. Tukey.
وفي نفس الفقرة شرح القاعدة اللي استخدمناها: أي جهاز ليه وضعين ثابتين يخزّن بت واحد، وعدد N من الأجهزة دي بيخزّن N بت، لأن عدد الحالات الممكنة 2 أس N.
Babbage كان ممكن يختار الثنائي
حسب متحف تاريخ الكمبيوتر، Babbage فكّر في استخدام النظام الثنائي وأنظمة تانية لآلاته في القرن التسعتاشر، لكنه اختار العشري: علشان يقلّل عدد القطع المتحركة في آلة ميكانيكية، وكمان علشان الناس متعودة عليه. أما الكمبيوترات الإلكترونية النهارده فبتستخدم الثنائي، لأنها مبنية من مفاتيح ليها حالتين: شغال أو مطفي.
هل البايت دايمًا 8 بت؟
النهارده آه في الغالب. لكن قاموس RFC 4949 بيذكر إن البايت هو أصغر وحدة ممكن الكمبيوتر يحدد عنوانها في الذاكرة، وإنه «النهارده غالبًا يعني 8 بت»، وإن بعض الأجهزة القديمة كان البايت فيها بأحجام تانية.
علشان كده معايير الشبكات بتفضّل كلمة Octet (Octet · الثُّمانيةوحدة بيانات من 8 بتات بالضبط، ويُفضَّل استخدام هذا المصطلح في معايير الشبكات لأن حجم البايت اختلف في بعض الأنظمة القديمة.عرض في القاموس)، ومعناها 8 بت بالظبط من غير أي احتمال تاني. هتقابل الكلمة دي كتير في مجال الشبكات.
أخطاء شائعة#
- «البت والبايت حاجة واحدة»: غلط. البايت = 8 بت. واختصار البت b صغيرة، واختصار البايت B كبيرة.
- «الرقم
10بالثنائي معناه عشرة»: غلط.10بالثنائي يساوي 2 بس (خانة الـ 2 فيها 1، وخانة الـ 1 فيها 0). - «الكمبيوتر بيفهم الحروف والصور مباشرة»: غلط. كل حاجة بتتحول الأول لأرقام، والأرقام بتتخزن على شكل 0 و1.
- «البايت يقدر يوصل لـ 256»: غلط. البايت فيه 256 قيمة، لكنها من 0 لـ 255، لأن العد بيبدأ من الصفر.
المصطلحات#
- النظام الثنائي (Binary (Base-2) · النظام الثنائينظام عدّ يستخدم رقمين فقط هما 0 و1، وكل خانة فيه تساوي ضعف الخانة التي على يمينها. وهو النظام الذي يخزّن به الحاسوب البيانات.عرض في القاموس): نظام عدّ يستخدم الرقمين 0 و1 فقط، وكل خانة فيه ضعف التي على يمينها.
- البت (Bit (Binary Digit) · البتأصغر وحدة لتخزين المعلومات في الحاسوب، وقيمتها إما 0 أو 1.عرض في القاموس): أصغر وحدة لتخزين المعلومات، وقيمتها إما 0 أو 1.
- البايت (Byte · البايتمجموعة من 8 بتات تُعامل كوحدة واحدة، ويمكنها تمثيل 256 قيمة مختلفة من 0 إلى 255.عرض في القاموس): مجموعة من 8 بتات، وتمثّل 256 قيمة من 0 إلى 255.
- الثُّمانية (Octet · الثُّمانيةوحدة بيانات من 8 بتات بالضبط، ويُفضَّل استخدام هذا المصطلح في معايير الشبكات لأن حجم البايت اختلف في بعض الأنظمة القديمة.عرض في القاموس): وحدة من 8 بتات بالضبط، تُستخدم في معايير الشبكات.
اختبر نفسك#
الرقم الثنائي 110 يساوي كام بالعشري؟
إظهار الإجابة
6. قيم الخانات من اليمين: 1 و2 و4. الخانات اللي فيها 1 هي الـ 4 والـ 2، يعني 4 + 2 = 6.
لو عندك 4 بتات، تقدر تمثّل كام قيمة مختلفة؟
إظهار الإجابة
16 قيمة، لأن كل بت بيضاعف عدد الاحتمالات: 2 × 2 × 2 × 2 = 16. يعني الأرقام من 0 لـ 15.
الملف حجمه 3 بايت. يعني فيه كام بت؟
إظهار الإجابة
24 بت، لأن كل بايت فيه 8 بت، و3 × 8 = 24.