الست عشري والثنائي والعشري: دليل لفهمها
إن كنت تبرمج أو تدرس الحوسبة أو تهوى الإلكترونيات، فستصادف عاجلاً أم آجلاً أرقاماً مكتوبة بالنظام الثنائي (10101101) أو الست عشري (0xAD). قد تبدو هذه الكتابات غامضة في البداية، لكنها تقوم كلها على الفكرة نفسها التي يقوم عليها النظام العشري الذي تعلمناه في المدرسة. في هذا الدليل نشرح تلك الفكرة، ونعرض طرق التحويل بين الأنظمة يدوياً خطوة بخطوة، وأين تظهر هذه الأنظمة في الحياة العملية.
لماذا توجد أنظمة مختلفة؟
النظام العشري (الأساس 10) هو ما نستخدمه يومياً، وربما لأن لدينا عشرة أصابع. أما الحواسيب فتعمل بالنظام الثنائي (الأساس 2: صفر وواحد فقط) لأن دوائرها الإلكترونية لها حالتان مستقرتان لا غير: يمرّ التيار أو لا يمرّ. كل 0 أو 1 يسمى بِت (bit)، وكل ثماني بتات تشكّل بايت واحداً.
مشكلة الثنائي هي طوله: الرقم 2026 يُكتب 11111101010 — إحدى عشرة خانة يصعب قراءتها ونسخها دون خطأ. وهنا يأتي دور النظام الست عشري (الأساس 16): بما أن 16 = 2⁴، فإن كل خانة ست عشرية تقابل بالضبط مجموعة من 4 بتات. فالرقم 2026 نفسه يُكتب 7EA — ثلاثة رموز بدل أحد عشر، دون فقدان أي معلومة. لهذا يستخدم المبرمجون الست عشري بوصفه «ثنائياً مضغوطاً». وبعد الرقم 9 نكمل العدّ بالحروف: A تعني 10، وB تعني 11، وC تعني 12، وD تعني 13، وE تعني 14، وF تعني 15.
القيمة المكانية: مفتاح كل شيء
في كل هذه الأنظمة، قيمة الخانة تعتمد على موضعها. في العشري، 4205 تعني 4×1000 + 2×100 + 0×10 + 5×1: كل موضع يساوي قوة من قوى العشرة. وفي الثنائي كل موضع يساوي قوة من قوى الاثنين (1، 2، 4، 8، 16…)، وفي الست عشري قوة من قوى الستة عشر (1، 16، 256، 4096…).
مثال: الثنائي 11010 يساوي 1×16 + 1×8 + 0×4 + 1×2 + 0×1 = 26. والست عشري 1A يساوي 1×16 + 10×1 = 26 أيضاً. عدد واحد بثلاث كتابات: 26 و11010 و1A.
ولتجنّب الالتباس، تستخدم لغات البرمجة بادئات: 0b للثنائي (0b11010) و0x للست عشري (0x1A). فبدون بادئة، قد تعني «10» عشرةً أو اثنين أو ستة عشر حسب الأساس!
كيف نعدّ في كل أساس
| عشري | ثنائي | ست عشري |
|---|---|---|
| 0 | 0 | 0 |
| 9 | 1001 | 9 |
| 10 | 1010 | A |
| 15 | 1111 | F |
| 16 | 10000 | 10 |
| 26 | 11010 | 1A |
| 173 | 10101101 | AD |
| 255 | 11111111 | FF |
| 2026 | 11111101010 | 7EA |
لاحظ الصف 255: هو أكبر قيمة يحملها بايت واحد (ثماني بتات كلها 1)، أي FF بالست عشري. خانتان ست عشريتان = بايت واحد، قاعدة ستصادفها في كل مكان.
التحويل خطوة بخطوة
من العشري إلى الثنائي: القسمة على 2
اقسم العدد على 2 تكراراً وسجّل الباقي في كل مرة، ثم اقرأ البواقي من الأسفل إلى الأعلى. مثال على 173:
- 173 ÷ 2 = 86 والباقي 1
- 86 ÷ 2 = 43 والباقي 0
- 43 ÷ 2 = 21 والباقي 1
- 21 ÷ 2 = 10 والباقي 1
- 10 ÷ 2 = 5 والباقي 0؛ ثم 5 ÷ 2 = 2 والباقي 1؛ ثم 2 ÷ 2 = 1 والباقي 0؛ ثم 1 ÷ 2 = 0 والباقي 1
القراءة من الأسفل إلى الأعلى تعطي: 10101101. وللتحقق بقوى الاثنين: 128 + 32 + 8 + 4 + 1 = 173. ✓
من الثنائي إلى الست عشري: مجموعات من 4 بتات
اجمع البتات أربعةً أربعةً بدءاً من اليمين (من خانة الآحاد)، وأكمل بأصفار في البداية عند الحاجة، ثم ترجم كل مجموعة: 10101101 ← 1010 و1101 ← A وD ← AD. وفي الاتجاه المعاكس، استبدل كل خانة ست عشرية ببتاتها الأربع مباشرة: 7EA ← 0111 1110 1010.
من العشري إلى الست عشري: القسمة على 16
الطريقة نفسها لكن بالقسمة على 16. مثال على 2026: القسمة تعطي 126 والباقي 10 (أي A)؛ ثم 126 ÷ 16 = 7 والباقي 14 (أي E)؛ ثم 7 ÷ 16 = 0 والباقي 7. القراءة من الأسفل إلى الأعلى: 7EA. نصيحة: كثيراً ما يكون المرور عبر الثنائي ثم التجميع رباعياً أسرع.
من الست عشري إلى العشري: قوى الستة عشر
اضرب كل خانة في قوة الستة عشر المقابلة لموضعها: AD = 10×16 + 13 = 173، و7EA = 7×256 + 14×16 + 10 = 1792 + 224 + 10 = 2026. وللسرعة أو للتحقق من حساباتك، يعرض محول هكس-ثنائي لدينا الأسس الأربعة (الثنائي والثماني والعشري والست عشري) في الوقت نفسه.
أين نصادفها عملياً؟
- ألوان الويب: الرمز #1A3C5E يعني أحمر = 0x1A (أي 26) وأخضر = 0x3C (أي 60) وأزرق = 0x5E (أي 94)، وكل قناة تمتد من 00 إلى FF (من 0 إلى 255).
- عناوين الذاكرة: تعرض المنقّحات (debuggers) العناوين بالست عشري لأنها أوضح كثيراً من الثنائي.
- عناوين الشبكة: عناوين MAC وعناوين IPv6 مثل 2001:0db8::1 مكتوبة بالست عشري.
- الملفات الثنائية ورموز الأخطاء: تُفحص بايتات الملفات بالست عشري، ومنها «الأرقام السحرية» مثل FF D8 في بداية ملفات JPEG.
- الأقنعة والأعلام البتّية: الصلاحيات والخيارات تُركَّب بتاً بتاً، والست عشري يُظهر البتات الفعّالة بوضوح.
أخطاء شائعة يجب تجنبها
- قراءة البواقي بالاتجاه الخاطئ: في طريقة القسمات المتتالية، أول باقٍ تحصل عليه هو البت الأدنى قيمة؛ اقرأ دائماً من الأسفل إلى الأعلى.
- التجميع من الجهة الخاطئة: مجموعات الأربع بتات تُبنى انطلاقاً من خانة الآحاد. فالعدد 1101011 يُجمَّع 110 ثم 1011، أي 0110 1011 = 6B.
- الخلط بين الأسس دون بادئة: «10» تساوي اثنين في الثنائي وستة عشر في الست عشري. استخدم 0b و0x كلما لم يكن السياق واضحاً.
- نسيان أن الحروف أرقام: A إلى F خانات كاملة الحقوق؛ فبالست عشري 1F + 1 = 20 (أي 31 + 1 = 32 بالعشري).
- الوقوع في فخ الثماني: في بعض اللغات، الصفر في البداية (010) يعني الأساس 8 — مصدر كلاسيكي للأخطاء البرمجية.
أسئلة شائعة
لماذا لا نستخدم العشري في كل شيء؟
لأن التحويل بين العشري والثنائي غير «متوافق»: الخانة العشرية لا تقابل عدداً صحيحاً من البتات. أما الست عشري فيُترجم إلى بتات مباشرة دون حساب، ولهذا صار الصيغة الطبيعية لتمثيل البيانات الثنائية.
هل يجب أن أحفظ التحويلات غيباً؟
يكفي حفظ المقابلات الست عشرة بين الخانات الست عشرية ومجموعات الأربع بتات لمعظم المواقف العملية. وفيما عدا ذلك، الأداة أدقّ وأسرع؛ المهم فهم المنطق لتفسير النتائج.
وماذا عن النظام الثماني (الأساس 8) المذكور في بعض المقررات؟
الثماني يجمّع البتات ثلاثاً ثلاثاً بدل أربع. ما يزال حياً في صلاحيات يونكس (chmod 755)، لكن الست عشري حلّ محله في كل مكان تقريباً لأنه يتوافق مع البايت المكوَّن من 8 بتات.
حوّل بين الست عشري والثنائي والثماني والعشري فوراً، مع عرض خطوات الحساب.
محول هكس-ثنائي →لمزيد من القراءة
أنظمة العدّ ليست سوى واحدة من الأدوات الرياضية المفيدة يومياً: إن كنت تتعامل مع الزوايا أو المتجهات أو الدوران، فجرّب حاسبة المثلثات التي تعرض هي الأخرى كل حساب خطوة بخطوة.