ما هو المتمم الأحادي؟
يُحسب المتمم الأحادي (One's Complement) لأي عدد ثنائي عن طريق عكس كل بت فيه: فيتحوّل كل صفر إلى واحد وكل واحد إلى صفر. وبما أن النتيجة تعتمد على عدد البتات المستخدمة، يجب عليك تحديد عرض الكلمة مثل 4 أو 8 أو 16 أو 32 بت. وقد استُخدم هذا التمثيل في الحواسيب الأولى لترميز الأعداد الصحيحة ذات الإشارة، وما زال مهمًا عند دراسة الحساب الثنائي وعمليات التحقق من الأخطاء (Checksums).
كيفية استخدام الحاسبة
أدخل عددًا عشريًا غير سالب، واختر عرض البت، وستقوم الحاسبة بقصّ العدد على هذا العرض، ثم تعكس جميع البتات، وتعرض لك النتيجة بالنظامين الثنائي والعشري معًا. وإذا كان العدد أكبر مما يسمح به العرض المختار، فسيُحتفظ فقط بأدنى البتات ضمن هذا العرض قبل إجراء عملية العكس.
شرح المعادلة
نحسب القيمة بالصيغة التالية:
$$\text{ones} = \left(\sim n\right) \,\&\, \left(2^{w} - 1\right)$$الحدّ \(2^{w} - 1\) هو قناع (Mask) مكوّن من w من الآحاد (فلِـ 8 بتات يكون \(11111111 = 255\)). أما عملية النفي البتّي (\(\sim\)) فتعكس كل بت في n، بينما يتخلّص القناع من أي بتات تتجاوز العرض المختار حتى تبقى النتيجة ضمن النطاق المسموح.
مثال محلول
لنأخذ العدد 5 ضمن 8 بتات. بالنظام الثنائي، \(5 = 00000101\). وعند عكس كل بت نحصل على \(11111010\)، أي ما يساوي 250 في النظام العشري. إذن المتمم الأحادي للعدد 5 ضمن 8 بتات هو 250. أما ضمن 4 بتات، فإن \(5 = 0101\)، وبعد العكس يصبح \(1010 = 10\).
الأسئلة الشائعة
ما الفرق بين المتمم الأحادي والمتمم الثنائي؟ المتمم الثنائي (Two's Complement) يضيف 1 إلى المتمم الأحادي، وبذلك يتجنّب وجود تمثيلين مختلفين للصفر.
ما هو المتمم الأحادي للعدد 0؟ ضمن 8 بتات يكون \(11111111 = 255\)، إذ تتحوّل جميع البتات إلى واحد.
لماذا تتغيّر النتيجة بتغيّر عرض البت؟ لأن عكس البتات يعتمد على عددها؛ فكلما زاد العرض أُضيف المزيد من الآحاد في المقدمة، ما يؤدي إلى قيمة عشرية أكبر.