الاتصال عبر MCP →

أدخل الحساب

صيغة رياضية

اعلان

نتائج

Two's Complement Binary (8-bit)
11111011
تمثيل المتمم الثنائي
القيمة بدون إشارة ٢٥١
القيمة بإشارة ؜-٥
عدد البتات 8 بت

ما هي حاسبة المتمم الثنائي؟

المتمم الثنائي (Two's Complement) هو الطريقة القياسية التي تخزّن بها الحواسيب الأعداد الصحيحة ذات الإشارة. تحوّل هذه الحاسبة أي عدد عشري إلى تمثيله بالمتمم الثنائي لعدد محدّد من البتات (4 أو 8 أو 16 أو 32 بت)، وتعرض لك القيمة بدون إشارة (unsigned) للنمط البتّي، إضافةً إلى القيمة بإشارة (signed) التي تمثّلها هذه البتات.

كيفية الاستخدام

أدخل عددًا عشريًا — موجبًا كان أم سالبًا — ثم اختر عدد البتات. تقوم الأداة بحساب باقي العدد بالنسبة إلى \(2^{n}\)، فتنتج النمط البتّي ذاته الذي يخزّنه المعالج تمامًا. كما تخبرك بالقيمة ذات الإشارة التي يفكّ إليها هذا النمط نفسه، حتى تتمكن من التحقق من صحة التحويل ذهابًا وإيابًا.

شرح المعادلة

لحقل مكوّن من n من البتات، يُحسب التمثيل بدون إشارة بالعلاقة $$u = ((x \bmod 2^n) + 2^n) \bmod 2^n$$ وهذا يلفّ الأعداد السالبة حول الحقل: فعند 8 بتات يصبح ‎-5‎ مساويًا \(256 - 5 = 251\)، وتمثيله الثنائي هو 11111011. ولفكّ النمط إلى قيمة بإشارة، تحقّق من البت الأكثر دلالة (MSB): إذا كان يساوي 1 (أي \(u \geq 2^{n-1}\))، فإن القيمة هي \(u - 2^n\)؛ وإلا فهي ببساطة \(u\). وهناك طريقة مكافئة للنفي تتمثّل في عكس جميع البتات ثم إضافة واحد: \(\sim x + 1\).

Number line showing unsigned values wrapping into signed positive and negative ranges
Values at or above 2^(n-1) wrap to negative; the upper unsigned half maps to negative signed numbers.

مثال محلول

لنحوّل ‎−5‎ إلى متمم ثنائي بطول 8 بتات. الخطوة 1: \(2^{8} = 256\). الخطوة 2: $$u = ((-5 \bmod 256) + 256) \bmod 256 = 251$$ الخطوة 3: العدد 251 بالنظام الثنائي هو 11111011. وبما أن البت الأكثر دلالة يساوي 1، فإن القيمة بإشارة هي \(251 - 256 = -5\)، وهو ما يؤكّد صحة التحويل.

Step diagram converting a negative decimal to two's complement binary
Two's complement of a negative value: invert the bits of the magnitude, then add one.

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

ماذا يحدث إذا كان العدد أكبر من سعة عدد البتات؟ يحدث له لفّ (فيض/overflow) بأخذ الباقي بالنسبة إلى \(2^{n}\)، تمامًا كما يفعل العتاد. على سبيل المثال يصبح العدد 300 عند 8 بتات مساويًا \(300 - 256 = 44\).

لماذا تختلف القيمة بدون إشارة عن القيمة بإشارة؟ يمكن قراءة البتات نفسها بطريقتين: القراءة بدون إشارة تعتبر جميع البتات موجبة، أما القراءة بإشارة فتعامل البت الأعلى على أنه وزن سالب.

هل تدعم الأداة 64 بت؟ تدعم هذه الأداة الأطوال الشائعة حتى 32 بت، وذلك للحفاظ على النتائج ضمن حدود دقّة آمنة.

آخر تحديث: