§

Options

§

ثنائي (أساس 2)

§

ثماني (أساس 8)

§

عشري (أساس 10)

§

ست عشري (أساس 16)

§

أساس مخصص

تعتمد جامعة الملك عبدالله للعلوم والتقنية KAUST في برامج هندسة الأنظمة المدمجة على تحليل الإخراج الست عشري من مجسّات JTAG لقراءة عناوين ذاكرة الفلاش وتصحيح أخطاء البرامج الثابتة. كذلك يُدرِّس المعهد الملكي للعلوم والتكنولوجيا تحويل أنظمة العد كمادة أساسية في مقررات بنية الحاسب، إذ يُحلِّل الطلاب بروتوكولات CAN bus وSPI من الكشوف الثنائية الخام ويترجمونها إلى عشري للمقارنة مع المواصفات. تنفِّذ هذه الأداة التحويل محليًا داخل متصفحك دون إرسال القيم الحسّاسة — كعناوين الذاكرة ومسجّلات التكوين — إلى أي خادم خارجي.

كيف يعمل تحويل الأعداد؟

كل نظام عد موضعي يُمثِّل قيمة كمجموع أرقام مضروبة في قوى الأساس. تغيير الأساس يعني إعادة كتابة القيمة ذاتها وفق متتالية قوى مختلفة.

  1. التحقق من صحة الأبجدية. كل أساس يقبل مجموعة محددة من الأرقام. الثنائي يقبل 0 و1؛ والثماني يقبل 0-7؛ والعشري يقبل 0-9؛ والست عشري يقبل 0-9 و A-F. أي حرف خارج الأبجدية المختارة يُظهر خطأً مدمجًا قبل تشغيل أي تحويل.
  2. تحليل القيمة. للقيم التي تقع ضمن نطاق JavaScript Number (حتى 2^53-1) تستدعي الأداة parseInt(text, base). فوق هذا الحد تلجأ إلى BigInt لتبقى دقة التحويل كاملة للأعداد الصحيحة الكبيرة.
  3. إعادة العرض في كل الأسس. تُحوَّل القيمة المُحلَّلة إلى كل أساس مستهدف عبر Number.prototype.toString(base) أو BigInt.prototype.toString(base). تتحدَّث النوافذ الأربع القياسية (ثنائي، ثماني، عشري، ست عشري) والنافذة المخصصة معًا.
  4. تطبيق التنسيق. مفتاح البادئة يضيف 0b أو 0o أو 0x إلى بداية مخرجات الثنائي والثماني والست عشري. تجميع الأرقام يدرج شرطة سفلية كل أربع خانات ثنائية وكل خانتين ست عشريتين. مفتاح حالة الست عشري يختار الأحرف الكبيرة أو الصغيرة لـ A-F.
  5. المزامنة الفورية بين النوافذ. تحرير أي نافذة يُطلق إعادة تحويل مؤجلة 100 ميلي ثانية تُحدِّث النوافذ الأخرى. النافذة التي تكتب فيها تُعامَل على أنها المصدر الموثوق مع كل ضغطة مفتاح.

لماذا نستخدم محوِّل الأعداد؟

  • قراءة تفريغات الذاكرة. تعرض برامج التصحيح والمُفكِّكات وعارضات core dump العناوين وقيم المسجّلات بالست عشري. تحويلها إلى عشري يجعلها قابلة للمقارنة مع الأعداد والأحجام والإزاحات المُبلَّغ عنها في مكان آخر من نفس التتبع.
  • العمل مع رموز الألوان. تُعبِّر CSS وأدوات التصميم وصيغ الصور عن الألوان بثلاثيات ست عشرية مثل #d2511a. تحويل كل زوج إلى عشري يُحوِّل اللون إلى صيغة rgb(210, 81, 26) التي يتوقعها منتقي الألوان أو أداة فحص إمكانية الوصول.
  • فك ترميز صلاحيات الملفات. قيم chmod في Unix مكتوبة بالثماني: 755 تعني rwxr-xr-x حين تُترجم كل خانة ثمانية إلى ثلاثة بتات ثنائية. يعرض المحوِّل هذا التعيين في خطوة واحدة حتى تتحقق من مجموعة صلاحيات دون الرجوع إلى صفحة دليل.
  • تصحيح أخطاء البتّات العلَمية. بروتوكولات الشبكة واستدعاءات نواة النظام والمسجّلات البرمجية تحزم أعلامًا منطقية كثيرة في عدد صحيح واحد. قراءة العدد بالثنائي تُظهر أي البتّات مُفعَّلة بنظرة واحدة، وهو ما تحتاجه حين تبحث عن سبب عدم تفعُّل علَم ما.

تطبيقات شائعة

يظهر تحويل الأعداد في العمل اليومي للمطوّرين ومتخصصي الأمن والأجهزة كلما كان العدد أكثر من مجرد عداد.

  • البرامج الثابتة المدمجة: قراءة تفريغ ست عشري من مجسّ JTAG، تحديد عنوان دالة، وكتابة أمر نقطة توقف باستخدام الإزاحة العشرية التي يقبلها نص برمجة المُصحِّح.
  • أمن الشبكات: تحليل قناع شبكة 32 بِتّاً مطبوعًا بعشري منقط إلى ثنائي لحساب طول البادئة، ثم كتابة صيغة CIDR لقاعدة ACL.
  • ألغاز CTF وتحديات التشفير: التنقل بين الست عشري والعشري والثنائي أثناء مقارنة شظية مفتاح مسرَّبة بمرشَّح نص واضح تحت XOR.

مثال عملي

اكتب 255 في نافذة العشري. تتحدَّث نافذة الست عشري إلى FF (أو 0xFF مع تفعيل البادئة)، والثنائي إلى 11111111 (مجمَّعة 1111_1111)، والثماني إلى 377. غيِّر أساس النافذة المخصصة إلى 36 وستظهر القيمة ذاتها كـ 73. اكتب قيمة كبيرة جدًا مثل 123456789012345678901234567890 في نافذة العشري؛ تستخدم نافذة الست عشري مسار BigInt وتعرض 18EE90FF6C373E0EE4E3F0AD2.

FAQ

ما هو أساس العد؟

أساس العد أو الجذر هو عدد الأرقام المميزة التي يستخدمها نظام موضعي قبل الانتقال إلى الخانة التالية. العشري (أساس 10) يستخدم 0-9؛ والثنائي (أساس 2) يستخدم 0 و1 فقط؛ والست عشري (أساس 16) يستخدم 0-9 بالإضافة إلى A-F. قيمة العدد لا تتغير حين تغير الأساس — فقط طريقة كتابة أرقامه وتجميعها.

لماذا نستخدم الست عشري في البرمجة؟

خانة ست عشرية واحدة تُعادل تمامًا أربعة بتات ثنائية، فخانتان ست عشريتان تغطيان بايتًا وثماني خانات تغطي كلمة 32 بِتّاً. هذا يجعل الست عشري أكثر الصيغ إيجازًا وقابلية للقراءة البشرية لعناوين الذاكرة ومحتويات المسجّلات والثلاثيات اللونية والمفاتيح التشفيرية. قراءة 0xFF أسرع من قراءة 11111111، والنمط الثنائي موجود أمامك حين تحتاجه.

هل يمكن التحويل لأساس أكبر من 36؟

تتوقف هذه الأداة عند أساس 36 لأن ذلك الحد الأعلى لواجهتَي JavaScript الأصليتين parseInt وtoString، اللتين تقبلان 0-9 متبوعة بـ A-Z كأبجدية أرقام. الأسس من 37 إلى 62 ممكنة بأبجدية مخصصة (Base58 المستخدم في عناوين Bitcoin مثال على ذلك) لكنها تُتابَع كأداة منفصلة لأن كل أساس أعلى يحتاج ترتيبًا قانونيًا خاصًا بأرقامه.

هل تدعم الأعداد السالبة والكسرية؟

الأعداد الصحيحة السالبة تُعرض بعلامة ناقص في كل الأسس، وهو السلوك ذاته الذي تشحن به Number.prototype.toString. تمثيل المتمم الثنائي عبر عرض بتات محدد (8، 16، 32، 64) عرض مخطط لإضافته لاحقًا. تحويل الأعداد الكسرية خارج نطاق هذا الإصدار أيضًا؛ تتعامل الأداة مع الأعداد الصحيحة فقط.

تحويل الأعداد مهمة صغيرة تتكرر باستمرار في عمل البرامج الثابتة والأمن والرسومات. إجراؤها في علامة تبويب متصفح بالبدائيات الحسابية ذاتها التي تستخدمها Node وV8 يبقي العمل سريعًا والبيانات على جهازك.