حساب المتمم الثنائي
المدخلات
| اتجاه التحويل | عشري → ثنائي |
|---|---|
| عرض البت | 8 بتات |
| القيمة العشرية | -42 |
| الإدخال الثنائي | 11010110 |
حساب المتمم الثنائي
تحويل عدد صحيح موقَّع إلى تمثيله الثنائي والسداسي عشري بأسلوب المتمم الثنائي، أو فك ترميز سلسلة ثنائية للحصول على قيمتها العشرية. يدعم أعراض 8 و16 و32 و64 بتاً.
المدخلات
المدخلات
النتائج
أدخل قيمة لعرض النتائج.
التمثيل
المتمم الثنائي
المتمم الثنائي هو الأسلوب القياسي الذي تعتمده الحواسب الرقمية لتخزين الأعداد الصحيحة الموقَّعة ومعالجتها. تستخدمه جميع بنى المعالجات الشائعة — x86 وARM وRISC-V وغيرها — لأنه يتيح إجراء الطرح بالدائرة الإلكترونية ذاتها المستخدمة للجمع، ويُنتج تمثيلاً واحداً للصفر.
مبدأ الترميز
يحتوي سجل N بتاً على نمطاً ثنائياً مختلفاً. نصفها يمثل الأعداد غير السالبة ( إلى ) والنصف الآخر الأعداد السالبة ( إلى ). الخاصية المحورية أن البت الأقصى يساراً (الأكثر أهمية) يؤدي دور بت الإشارة: 0 للقيم غير السالبة، و1 للقيم السالبة.
بالنسبة للأعداد غير السالبة يتطابق الترميز مع الثنائي العادي غير الموقَّع. على سبيل المثال، العدد 42 في سجل 8 بتات:
حساب المتمم الثنائي لعدد سالب
لإيجاد ترميز المتمم الثنائي لعدد سالب (حيث ) في سجل N بتاً، يُضاف إلى القيمة:
لحساب في 8 بتات: . مكتوباً ثنائياً ومجمَّعاً في رباعيات:
21410=110101102=0xD6ثمة إجراء عملي مكافئ للحصول على المتمم الثنائي: عكس جميع بتات الترميز الموجب ثم إضافة 1:
- العكس:
- إضافة 1: ✓
تعطي الطريقتان النتيجة ذاتها.
قراءة قيمة مرمَّزة بالمتمم الثنائي
لتحويل سلسلة ثنائية مرمَّزة بأسلوب المتمم الثنائي إلى عدد عشري موقَّع، يُفحص بت الإشارة:
- إذا كان البت الأول 0، فالقيمة غير سالبة وتُقرأ كثنائي عادي: .
- إذا كان البت الأول 1، فالقيمة سالبة. يُطرح من القيمة غير الموقَّعة: ، إذن .
النطاقات القابلة للتمثيل
يُقسّم بت الإشارة النطاق الكلي إلى نصفين. يمثّل سجل N بتاً الأعداد التالية:
| عرض البت | الحد الأدنى | الحد الأقصى |
|---|---|---|
| 8 بتات | −128 | 127 |
| 16 بتاً | −32,768 | 32,767 |
| 32 بتاً | −2,147,483,648 | 2,147,483,647 |
| 64 بتاً | −9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
يلاحظ الاختلاف في التماثل: ثمة دائماً قيمة سالبة إضافية مقارنةً بالقيم الموجبة. ينشأ هذا لأن الصفر يشغل إحدى خانات القيم غير السالبة، فيبقى قيمة موجبة في مقابل قيمة سالبة.
الفيض العددي
حين تقع نتيجة العملية الحسابية خارج النطاق القابل للتمثيل، تلتفّ النتيجة — وهو ما يُعرف بالفيض العددي. في سجل 8 بتات، يؤدي جمع 1 مع 127 إلى: ، وهو ترميز −128. تضع الأجهزة عادةً علامة فيض تُمكّن البرنامج من رصد هذه الحالة والتعامل معها، غير أن العملية الثنائية الأساسية ليست سوى جمع نمطي.
المتمم الثنائي مقارنةً بتمثيل الإشارة والقيمة المطلقة
يخصّص تمثيل الإشارة والقيمة المطلقة بتاً واحداً للإشارة وبقية البتات للقيمة المطلقة. لهذا التمثيل عيبان: أولاً، يوجد تمثيلان للصفر — الصفر الموجب () والصفر السالب () — مما يفرض معالجةً خاصة عند المقارنة. ثانياً، يستلزم جمع أعداد مختلفة الإشارة دوائر منفصلة تحدد أيّ المعاملين أكبر. يحلّ المتمم الثنائي هذين الإشكالين: دائرة جامعة واحدة تتولى جميع الحالات، وللصفر تمثيل واحد فقط هو .
الأسئلة الشائعة (FAQ)
لماذا يُستخدم المتمم الثنائي بدلاً من تمثيل الإشارة والقيمة المطلقة؟
يخزّن تمثيل الإشارة والقيمة المطلقة الإشارةَ في بت منفصل وبقية الأرقام في البتات الأخرى، مما ينتج عنه تمثيلان للصفر (صفر موجب وصفر سالب) ويستلزم دوائر منفصلة للجمع والطرح.
يحلّ المتمم الثنائي هذين الإشكالين معاً: للصفر تمثيل ثنائي واحد فقط، وتتولى دائرة جمع واحدة معالجة الأعداد الموجبة والسالبة على حدٍّ سواء دون حالات استثنائية. لهذه البساطة الهندسية يعتمد كل معالج حديث تمثيلَ المتمم الثنائي لحساب الأعداد الصحيحة.
ما نطاق عدد صحيح موقَّع بعرض 8 بتات؟
يمثّل عدد المتمم الثنائي ذو 8 بتات 256 قيمة في المجموع: من −128 إلى 127. القيمة الأكثر سلبيةً (−128) تحمل نمط البتات 10000000، إذ يدل البت الأول 1 على قيمة سالبة. أما أعلى قيمة موجبة (127) فنمطها 01111111. ينشأ هذا التفاوت — قيمة سالبة إضافية — لأن الصفر يشغل إحدى خانات القيم غير السالبة.
لأي سجل مؤلف من N بتاً، يمتد النطاق من −2^(N−1) إلى 2^(N−1) − 1: فبعرض 16 بتاً يكون من −32,768 إلى 32,767، وبعرض 32 بتاً من −2,147,483,648 إلى 2,147,483,647.