تحويل من ثماني إلى عشري

تحويل الأرقام في النظام الثماني إلى قيم بالنظام العشري.

إذا كتبت التعبير parseInt("010") في سطر أوامر قديم للغة JavaScript دون تحديد الأساس، فقد تحصل على 8 بدلاً من عشرة. يعود هذا السلوك غير المتوقع إلى قاعدة برمجية سابقة كانت تعتبر الصفر في بداية الرقم دليلاً على أنه مكتوب في النظام الثماني، وهو ما تسبب في أخطاء صامتة عديدة قبل تعديل معايير المتصفحات.

مفهوم النظام الثماني كأحد أنظمة العد

يعتمد النظام الثماني على الأساس 8، وتُحسب فيه المنازل بقوى العدد 8 بدلاً من قوى 10 المعتادة في النظام العشري. تتراوح الخانات المسموحة بين 0 و 7 فقط، فلا وجود للخانتين 8 أو 9 في هذا النظام. خذ على سبيل المثال القيمة الثمانية 57: الرقم 5 يقع في منزلة الثمانيات، بينما يقع الرقم 7 في منزلة الآحاد.

تتم عملية التحويل بحساب: (5 × 8) + 7 = 47. تمثل هذه النتيجة نفس المقدار الذي تعبر عنه القيمة 2F في النظام الست عشري أو القيمة 101111 في النظام الثنائي؛ فكلها تدوينات مختلفة لنفس العدد الحسابي بدقة.

مشكلة الصفر البادئ في لغة C وغيرها

في لغة البرمجة C، يُعامل أي ثابت عددي يبدأ بصفر عادي تلقائياً كعدد ثماني، مما يجعل القيمة 010 تعني 8 وليس عشرة. سارت JavaScript على هذا النهج لسنوات طويلة قبل توثيقه ثم التراجع عنه رسمياً.

ظهرت الآثار الجانبية لهذه المعالجة عندما كان المطورون يضيفون أصفاراً لتنسيق البيانات مثل التواريخ أو الرموز البريدية، ثم يمررون تلك النصوص إلى دوال التحويل دون تحديد الأساس 10 صراحة. أصلحت مواصفة ECMAScript 5 سلوك دالة parseInt لتعتمد النظام العشري افتراضياً، لكن السلوك القديم ما زال موجوداً في الشيفرات الموروثة ولغات أخرى.

استخدامات الأرقام الثمانية الشائعة

  • أذونات الملفات في أنظمة Unix — تُكتب قيم chmod و umask عادة في النظام الثماني، لذا توضع في أولها بادئة صفرية لتمييزها بوضوح.
  • شيفرات C و C++ — يُعد الصفر في بداية الثابت العددي الصحيح تعبيراً مقصوداً عن النظام الثماني منذ الإصدارات الأولى للغة.
  • البادئات الصريحة الحديثة — تتطلب لغات مثل Python والإصدارات المعاصرة من JavaScript بادئة صريحة 0o لتمثيل الأرقام الثمانية تفادياً لأي لبس.

خطوات التحويل اليدوي من الثماني إلى العشري

  1. اكتب خانات العدد الثماني وحدد رتبة كل خانة من اليمين إلى اليسار بدءاً من 0.
  2. اضرب كل خانة في ناتج رفع الأساس 8 إلى قوة رتبة تلك الخانة.
  3. اجمع النواتج معاً للحصول على المكافئ العشري النهائي.
  4. تأكد من عدم احتواء المدخل الأصلي على الرقمين 8 أو 9، وإلا فلن يكون عدداً ثمانياً صحيحاً.

أسئلة شائعة حول تحويل الأرقام الثمانية

لماذا يقتصر النظام الثماني على الخانات بين 0 و 7؟

يعتمد النظام على الأساس 8، وبالتالي تتسع الخانة الواحدة لثمانية احتمالات فقط تبدأ من 0 وتنتهي عند 7. ظهور 8 أو 9 يبطل صحة التمثيل تماماً كما يبطل الرقم 2 التمثيل الثنائي.

أين يُستعمل النظام الثماني في الحوسبة المعاصرة؟

ينحصر استخدامه الفعلي حالياً في أذونات الملفات وصلاحيات الوصول، مع بعض التطبيقات في الأنظمة المدمجة القديمة والملفات التراثية المكتوبة بلغات عائلة C.

ما السبب الدقيق لخلل دالة parseInt القديمة؟

كانت محركات المتصفحات القديمة تفسر أي نص يبدأ بصفر كعدد ثماني إذا لم يُمرر وسيط الأساس، فيتحول الإدخال ‘010’ تلقائياً إلى 8 بدلاً من عشرة مسبباً أخطاء برمجية خفية.

هل يختلف هذا التحويل عن قراءة قيم chmod؟

العملية الحسابية متطابقة تماماً، إلا أن قيم chmod تُقرأ في العادة كأعلام لأذونات القراءة والكتابة والتنفيذ بدلاً من التعامل معها كرقم رياضي مجرد.

كيف تدعم لغة JavaScript الحديثة الأرقام الثمانية؟

تدعمها عبر البادئة الصريحة 0o مثل القيمة 0o57، في حين تم إيقاف الاعتماد التلقائي على الصفر البادئ في الوضع الصارم.

Cookie
نحن نهتم ببياناتك ونود استخدام ملفات تعريف الارتباط لتحسين تجربتك.