arrow_backالعودة إلى ملاحظات المجال
COMPUTER SCIENCE منشور 5 Aug 2026

Binary, Hex, and Data Units Explained

معجم عملي لنظم الأرقام الثنائية والسادسة عشرة واتفاقيات وحدات البيانات المستخدمة في البرمجة والشبكات وعمل الطب الشرعي الرقمي.

كل بايت تفحصه في محرر سادس عشري، كل قناع شبكة فرعية تحسبه، كل حجم ملف تبلغ عنه أداة يعتمد على مجموعة صغيرة من أنظمة الأرقام واتفاقيات الوحدات. إذا أخطأت في هذه الأمور ستسيء تقييم حجم buffer، أو تسيء قراءة dump الذاكرة، أو تجادل زميلك حول ما إذا كان 1 KB يساوي 1000 أو 1024 بايت.

Binary: نظام الأرقام الأساسي الذي تتحدثه كل حاسوب بالفعل

النظام الثنائي هو الأساس 2 — فقط 0 و 1. الرقم الثنائي الواحد يسمى bit. إذا جمعت 8 bits معاً تحصل على byte، والذي يمكنه تمثيل 256 قيمة مختلفة (0 إلى 255 بدون إشارة، أو -128 إلى 127 بصيغة two's complement موقعة).

عندما ترى 01001000 فهذا يساوي 72 في النظام العشري، وهو يصادف أن يكون رمز ASCII للحرف 'H'. التحويل يدويًا هو فقط جمع قوى العدد 2 من الـ bit الأيمن: 2^6 + 2^3 = 64 + 8 = 72. أدوات مثل python3 -c "print(bin(72))" أو xxd على ملف ستفعل هذا فوراً، لكن فهم الرياضيات مهم عندما تقوم بـ reverse engineering لـ bitmask أو حساب قيم الأعلام في رأس TCP.

Hexadecimal: اختصار النظام الثنائي

النظام السادس عشري هو الأساس 16، ويستخدم 0-9 و A-F. وجوده لأن النظام الثنائي غير قابل للقراءة بأحجام كبيرة والعشري لا ينطبق بشكل نظيف على حدود البايت. رقم سادس عشري واحد يمثل بالضبط 4 bits، لذا رقمان سادس عشريان يمثلان بايتاً كاملاً واحداً — 0x00 إلى 0xFF يغطي جميع قيم الـ 256 بايت بدون هدر.

هذا هو السبب في أن hex dumps هي الافتراضية في أدوات مثل xxd أو hexdump -C أو عرض الذاكرة في disassembler. عندما ترى 0x4D 0x5A في بداية ملف، هذا هو رأس MZ الذي يحدد ملف Windows PE القابل للتنفيذ. عناوين الذاكرة وأكواد الألوان (#FF5733) وعناوين MAC وعناوين IPv6 كلها تُكتب بشكل عام بالنظام السادس عشري لأنه ينطبق بنظافة على بنية البايت و nibble الأساسية.

تحويل سادس عشري إلى عشري: 0x4D = (4 × 16) + 13 = 77. في Python، int('4D', 16) يوصلك هناك بدون حساب يدوي، و hex(77) يذهب بالاتجاه الآخر.

حيث يلتقي النظام الثنائي والعشري والسادس عشري فعلاً في الممارسة

عناوين IP هي مثال جيد حيث تتصادم جميع الأنظمة الثلاثة. عنوان IPv4 مثل 192.168.1.1 هو فعلاً أربعة بايتات: 11000000.10101000.00000001.00000001 بالنظام الثنائي، أو C0.A8.01.01 بالنظام السادس عشري. حساب الشبكات الفرعية — معرفة ما إذا كان عنوانان على نفس الشبكة — هو في الأساس عمليات AND ثنائية على قناع الشبكة الفرعية، حتى لو كنا نكتب كل شيء بالترميز العشري المنقوط للراحة.

في الطب الشرعي الرقمي وتحليل البرامج الضارة، أنت تترجم باستمرار بين هذه التمثيلات. يعرض disassembler الأكواد البرمجية بالنظام السادس عشري، لكن CPU ينفذ ثنائياً خاماً، وقيم السجلات غالباً ما تُفسَّر كإزاحات عشرية أو سلاسل نصية ASCII اعتماداً على السياق. معرفة أن 0x41 هو في نفس الوقت الرقم 65 والحرف ASCII 'A' هو نوع التعرف على الأنماط الذي يسرع التحليل اليدوي بشكل كبير.

وحدات البيانات: مشكلة 1000 مقابل 1024

هذا هو المكان الذي يقع فيه الناس فعلاً. مصنعو التخزين والأنظمة الملفية وأنظمة التشغيل لا توافق دائماً على ما يعنيه

تمت كتابة هذا المقال بمساعدة الذكاء الاصطناعي، وراجعه ونشره Michal Pilch (CISSP)، Korra Studio.

هل أنت مستعد للمضي قدماً؟

هذه ملاحظة واحدة من قاعدة معارف Korra Studio — المنصة تجمع كل موضوع مع التوجيه الفردي.

ابدأ بالمجانarrow_forward