محول أنظمة الأعداد مع دعم الأرقام السالبة

يعمل عالم الكمبيوتر بالصفر والواحد، لكن البشر يفكرون بالأرقام العشرية. وماذا عن المبرمجين؟ عليهم فهم كل ما بين ذلك. سواء كنت تقوم بتصحيح أخطاء التعليمات البرمجية منخفضة المستوى، أو إعداد الألوان في CSS، أو حساب أقنعة IP، أو حل مهام علوم الكمبيوتر، فإنك تواجه الحاجة إلى تحويل الأرقام بين الأنظمة.

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

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

عند تطوير هذه الأداة، ركزنا على حل المشاكل الأكثر شيوعًا للمبرمجين:

  1. تفاعل في الوقت الفعلي: لا يوجد زر “حساب”. ابدأ الكتابة في حقل HEX وشاهد كيف تتغير قيم BIN و DEC على الفور.
  2. دعم الأعداد السالبة (Signed Integers): تفشل معظم المحولات عبر الإنترنت عندما تكتب -5. نحن لا نفعل ذلك. بفضل اختيار عمق البت (8، 16، 32، 64 بت)، نحاكي السلوك الدقيق للمعالج باستخدام ما يسمى مكمل الاثنين.
  3. سهولة قراءة الكود الثنائي: النظر إلى 1110101011011110 أمر متعب للعين. يمكن لأداتنا تنسيق المخرجات تلقائيًا بعد كل 4 بتات (نيبلز) لتصبح 1110 1010 1101 1110، مما يقلل بشكل كبير من الأخطاء عند النسخ.
  4. دعم BigInt: هل تحتاج إلى تحويل رقم 64 بت أو تجزئة؟ يتوقف JavaScript القياسي عند الرقم $2^{53}$. يستطيع محركنا التعامل مع الأعداد بأي طول في وضع “غير موقع”.

دليل أنظمة الأعداد: متى تستخدم كل منها؟

1. النظام العشري (DEC - Decimal)

  • الأساس: 10 (الأرقام 0-9)
  • الاستخدام: الحياة اليومية، المالية، عد الحلقات في الكود.
  • ملاحظة مثيرة للاهتمام: لا تفهمها أجهزة الكمبيوتر، بل يجب عليها تحويلها إلى ثنائي.

2. النظام الثنائي (BIN - Binary)

  • الأساس: 2 (الأرقام 0، 1)
  • الاستخدام: لغة الآلة، البوابات المنطقية، إخفاء عنوان IP.
  • نصيحة: كل رقم يمثل بتاً واحداً. 8 بتات تشكل 1 بايت (Byte).

3. النظام السداسي عشري (HEX - Hexadecimal)

  • الأساس: 16 (الأرقام 0-9، الأحرف A-F)
  • الاستخدام: كتابة مضغوطة للكود الثنائي. يمثل حرف HEX واحد 4 بتات بالضبط (نيبل). يمثل حرفان (مثل FF) بايتًا كاملاً.
  • أمثلة:
    • ألوان الويب: #FF5733 (أحمر، أخضر، أزرق).
    • عناوين MAC: 00:1A:2B:3C:4D:5E.
    • تفريغات الذاكرة (Memory dumps).

4. النظام الثماني (OCT - Octal)

  • الأساس: 8 (الأرقام 0-7)
  • الاستخدام: أجهزة الكمبيوتر القديمة تاريخياً، واليوم بشكل خاص صلاحيات Linux (chmod).
  • مثال: الأمر chmod 755 يحدد الصلاحيات rwx-rx-rx (قراءة، كتابة، تنفيذ).

كيف تتعامل مع الأعداد السالبة بشكل صحيح؟

هذه هي الميزة الأكثر تقدمًا في محولنا. لا توجد علامة “ناقص” في ذاكرة الكمبيوتر. لحفظ عدد سالب، يستخدم الكمبيوتر في الغالب طريقة مكمل الاثنين (Two’s Complement).

لكن نتيجة تحويل العدد السالب تعتمد على عدد البتات المخصصة للمتغير. لذلك، ستجد في الشريط العلوي مفتاح تبديل عمق البت.

مثال: كيف يبدو الرقم -5؟

جرب ذلك بنفسك في محولنا:

  1. اضبط العرض على 8-بت.

    • أدخل في DEC: -5.
    • النتيجة HEX: FB.
    • النتيجة BIN: 1111 1011.
    • تفسير: $256 - 5 = 251$ (وهو FB).
  2. اضبط العرض على 16-بت.

    • أدخل في DEC: -5.
    • النتيجة HEX: FFFB.
    • تفسير: نظرًا لوجود مساحة أكبر، ستمتلئ “الواحدات” بالباقي من المساحة على اليسار.
  3. اضبط العرض على موجب فقط (Unsigned).

    • إذا أدخلت -5، سيتحول الحقل إلى اللون الأحمر. لا يدعم هذا الوضع الأعداد السالبة، لأنه سيتطلب عددًا لا نهائيًا من الواحدات.

نصيحة احترافية: إذا كنت تعمل مع الألوان أو عناوين IP، فاستخدم دائمًا وضع “موجب فقط”. إذا كنت تقوم بمهام في C/C++ أو لغة التجميع (Assembly)، فقم بالتبديل إلى 32-بت أو 64-بت.


جدول التحويلات السريعة (Cheat Sheet)

للتوجيه السريع، نقدم هنا القيم الأساسية التي يجب على كل متخصص في تكنولوجيا المعلومات معرفتها عن ظهر قلب.

عشري (DEC)سداسي عشري (HEX)ثنائي (BIN)ملاحظة
0000000صفر
1010001
100A1010
150F1111القيمة القصوى لـ 4 بتات (نيبل)
16100001 0000
1277F0111 1111أقصى قيمة لـ 8 بت موقعة (char)
255FF1111 1111أقصى قيمة لـ 8 بت غير موقعة (بايت)
65 535FFFFأقصى قيمة لـ 16 بت

الأسئلة الشائعة (FAQ)

ماذا يعني "عمق البت" (Bit Depth)؟ يحدد مقدار الذاكرة المخصصة للرقم.
  • 8-بت: قيم من 0 إلى 255 (أو من -128 إلى 127). يتوافق مع نوع char أو byte.
  • 16-بت: قيم تصل إلى 65 535. يتوافق مع نوع short.
  • 32-بت: int قياسي في اللغات الحديثة.
  • 64-بت: للأعداد الكبيرة جدًا (long long, BigInt).
لماذا يُكتب الرقم 255 في النظام السداسي عشري كـ FF؟ النظام السداسي عشري يحتوي على 16 رقمًا (0-9 و A-F)، حيث يمثل F القيمة 15. يتم حساب الرقم FF كالتالي: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
كيف أحول لون HEX إلى RGB؟ يتكون لون الويب، مثل #E05412، من ثلاثة بايتات: الأحمر (E0)، الأخضر (54)، الأزرق (12). أدخل "E0" في حقل HEX في محولنا -> ستحصل على 224. أدخل "54" -> ستحصل على 84. أدخل "12" -> ستحصل على 18. النتيجة هي rgb(224, 84, 18).
ماذا تعني البادئات 0x، 0b، أو 0o؟ لتمييز الأنظمة، يستخدم المبرمجون البادئات التالية:
  • 0x = سداسي عشري (مثال: 0xFF)
  • 0b = ثنائي (مثال: 0b101)
  • 0o = ثماني (مثال: 0o755)
محولنا يتعرف على هذه العلامات، لكن ليس من الضروري كتابتها.
لماذا تحول الحقل إلى اللون الأحمر؟ هذه ميزة التحقق من صحة الإدخال. وهذا يعني أنك أدخلت حرفًا لا ينتمي إلى النظام المحدد. على سبيل المثال:
  • الحرف "G" في HEX (المسموح به هو A-F فقط).
  • الرقم "2" في BIN (المسموح به هو 0 و 1 فقط).
  • الرقم "8" في OCT (المسموح به هو 0-7 فقط).
صحح الخطأ الإملائي وسيستمر الحساب.