عشري إلى ثماني: الأساس المتخفّي خلف أذونات الملفات
ما الذي يفعله هذا التحويل
يكتب رقماً بالأساس 10 في الأساس 8 باستخدام الخانات من 0 إلى 7. وقد انسحب الثماني إلى مجالات ضيقة، لكن واحداً منها مشغول جداً: أذونات ملفات يونكس، حيث يكون قناع مثل 755 أو 644 ثمانياً ويُقرأ كثلاث خانات مستقلة لا كرقم واحد.
ثلاث بتات لكل خانة، وهذا هو بيت القصيد
تغطي الخانة الثمانية ثلاث بتات بالضبط، فينقسم حقل الأذونات ذو التسع بتات انقساماً نظيفاً إلى ثلاث مجموعات: المالك والمجموعة والآخرون. ولهذا ثبت هذا التدوين للأذونات بعد أن هجره الحساب. وتُبنى كل مجموعة من 4 للقراءة و2 للكتابة و1 للتنفيذ، فيكون 7 مجموع الثلاثة و5 قراءةً مع تنفيذ.
جدول تحويل العشري إلى الثماني
القيم العشرية الكامنة خلف أوضاع الملفات والأقنعة الصغيرة الأكثر تكراراً. وصفوف الأذونات جديرة بالحفظ بالعين، لأن chmod يأخذ الصيغة الثمانية بينما تعرض التقارير العشرية.
| عشري | ثماني |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 7 | 7 |
| 8 | 10 |
| 10 | 12 |
| 15 | 17 |
| 16 | 20 |
| 31 | 37 |
| 64 | 100 |
| 100 | 144 |
| 127 | 177 |
| 200 | 310 |
| 255 | 377 |
| 1000 | 1750 |
من أين جاء الثماني وأين بقي
كان الثماني مناسباً طبيعياً لآلات أحجام كلماتها من مضاعفات ثلاث بتات، وهكذا بُنيت حواسيب صغيرة مبكرة مثل PDP-8. ولما صارت البايتات ثمانية بتات والكلمات ست عشرة، أخذ الست عشري مكانه لأن أربعة تقسم ثمانية وثلاثة لا تفعل. وأذونات الملفات هي الناجي الأبرز، أبقاها عادة عمرها عقود وحقيقة أن ثلاث بتات أذونات تنقسم على ثلاثة تماماً.
قراءة خانة إذن واحدة
عامل كل خانة ثمانية في الوضع كمجموع صغير: 4 قراءة و2 كتابة و1 تنفيذ، تُجمع لتعطي الخانة التي تراها. فـ 755 قراءة وكتابة وتنفيذ للمالك، ثم قراءة وتنفيذ للمجموعة وللآخرين، و644 قراءة وكتابة للمالك وقراءة فقط لكل من سواه.
الأسئلة الشائعة
كيف أحوّل رقماً عشرياً إلى ثماني يدوياً؟
اقسم على 8 وسجّل الباقي، ثم أعد الكرّة مع الناتج حتى يصل إلى الصفر، واقرأ البواقي من الأخير إلى الأول. وفي 493: 493 ÷ 8 = 61 والباقي 5، ثم 61 ÷ 8 = 7 والباقي 5، ثم 7 ÷ 8 = 0 والباقي 7، فيكون الناتج 755.
لماذا تُكتب أذونات الملفات بالثماني؟
لأن ثلاث بتات أذونات لكل فئة مستخدمين تنقسم تماماً على خانة ثمانية واحدة، فيُقرأ الوضع كله كثلاث خانات قصيرة بدل تسع بتات. فـ 755 تعني قراءة وكتابة وتنفيذ، ثم قراءة وتنفيذ، ثم قراءة وتنفيذ — صيغة تفكّها بلا أي حساب.
ماذا يمنح chmod 755 فعلاً؟
للمالك أن يقرأ ويكتب وينفّذ، وللمجموعة وللآخرين أن يقرأوا وينفّذوا دون تعديل. وبالعشري ذلك 493. والمجلدات تستخدم البتات الثلاثة نفسها بمعنى مختلف للتنفيذ، ولهذا يحتاج المجلد عادة إلى تفعيلها ليُدخل إليه أصلاً.
هل ما زال الثماني مستخدماً في شيء آخر؟
أحياناً. فبعض اللغات تتيح كتابة ثوابت ثمانية بصفر بادئ، وقليل من صيغ الملفات وأقنعة الشبكات يستخدمه. وخارج ذلك حلّ الست عشري مكانه، لأن البايت ينقسم نظيفاً إلى خانتين ست عشريتين بينما ثلاثة لا تقسم ثمانية.
هل يتعامل المحوّل مع القيم السالبة والكسور؟
نعم لكلتيهما. فالرقم السالب يحتفظ بإشارته قبل الخانات الثمانية، وهو تمثيل المقدار والإشارة لا المتمم الثنائي. والكسور تُحوَّل خانةً خانة، وإن لم ينتهِ التوسيع تُعلَّم النتيجة كمقتطعة بدل تقريبها دون تنبيه.