محول الثنائي إلى الثماني

ثنائي

ما زال النظام الثماني حيا في صلاحيات ملفات Unix (chmod 755)، وكتيبات عصر PDP القديمة، وبعض سلاسل أدوات المتحكمات الدقيقة. يأخذ هذا المحول أي سلسلة ثنائية، ويجمع البتات ثلاثة في كل مرة من اليمين، ثم يطابق كل مجموعة مع رقم ثماني بين 0 و7 — مع بادئة صفر اختيارية للغات التي تعد 0755 قيمة ثابتة ثمانية.

كيفية تحويل الثنائي إلى الثماني

  1. 1

    أدخل القيمة الثنائية

    تزال المسافات. أي طول مقبول؛ تملأ المجموعة اليسرى تلقائيا بالأصفار حتى ثلاث بتات.

  2. 2

    اجمع البتات في ثلاثيات من اليمين

    `111101100` تصبح `111 101 100`. اتجاه التجميع مهم — دائما من اليمين إلى اليسار.

  3. 3

    طابق كل ثلاثية

    000 = 0، و001 = 1، و010 = 2، حتى 111 = 7. كل ثلاثية تطابق رقما ثمانيا واحدا بالضبط.

  4. 4

    اقرأ النتيجة وانسخها

    اختر أرقاما مجردة (`754`)، أو بادئة صفر (`0754`)، أو بادئة `0o` (`0o754`) لتوافق Python 3 وRust.

جدول مطابقة الثلاثية بالرقم الثماني

ثنائي ثماني
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

مثال: صلاحيات Unix

rwxr-xr-x تعني أن المالك لديه صلاحية القراءة والكتابة والتنفيذ، وأن المجموعة والآخرين لديهم القراءة والتنفيذ. في الثنائي يكون ذلك 111 101 101، وهو يتجمع مباشرة إلى الثماني 755 — الرقم نفسه الذي تمرره إلى chmod.

متى يكون الثماني مفيدا

  • صلاحيات الملفات: الأوامر chmod 644 وumask 022 وstat -c %a كلها تتحدث بالنظام الثماني.
  • متتاليات الهروب: \100 في لغة C هو الصيغة الثمانية للرمز @ (64 في النظام العشري).
  • رموز الآلة القديمة: تسرد وثائق PDP-8 وPDP-11 وDEC المبكرة رموز العمليات بالنظام الثماني لأن حجم الكلمة كان مضاعفا لـ 3 بتات.
  • الوضوح البصري: التجميع الثلاثي للبتات يُقرأ أسرع من الثنائي دون الحاجة إلى الأبجدية الكاملة للنظام الست عشري.

مزالق

  • الصفر البادئ يعني الثماني في لغة C: 0755 هو الثماني 755 (= 493 عشري)، أما 755 فهو 755 عشري. افحص لغتك قبل اللصق.
  • حذفت JavaScript الصيغة الثمانية القديمة: يرفض الوضع الصارم القيمة 0755. استخدم 0o755 بدلا منها.
  • اتجاه التجميع: إذا جمعت من اليسار إلى اليمين فستحصل على جواب خاطئ لأي تسلسل بتات لا يكون طوله مضاعفا لـ 3.

الأسئلة الشائعة

لأن أعلام الصلاحيات تأتي في مجموعات مرتبة من ثلاثة (قراءة، كتابة، تنفيذ) لكل دور (المالك، المجموعة، الآخرون). كل ثلاثية تطابق رقما ثمانيا واحدا، لذلك تُقرأ rwxr-xr-x كـ 755 في خطوة واحدة.

في C وPerl والأصداف استخدم صفرا بادئا. في Python 3 وRust وSwift استخدم 0o. في chmod على سطر الأوامر لا تستخدم أي بادئة.

الأعداد السالبة تحتاج عرض بت موقّعا (المتمم الثنائي). حدد العرض أولا؛ وإلا يعامل المحول كل المدخلات على أنها غير موقّعة.

لا. يملأ المحول المجموعة اليسرى بالأصفار حتى ثلاث بتات. تصبح 1111 هي 001 111، أي الثماني 17.

أدوات ذات صلة