متمم الاثنين

يُعدّ نظام المتمم الثنائي الطريقة الأكثر شيوعًا لتمثيل الأعداد الصحيحة الموقعة (الموجبة والسالبة والصفر) في الحواسيب، [ 1 ] وبشكل أعم، القيم الثنائية ذات الفاصلة الثابتة . وكما هو الحال في نظامي المتمم الأحادي ونظام الإشارة والمقدار ، يستخدم نظام المتمم الثنائي البت الأكثر أهمية كإشارة للدلالة على الأعداد الموجبة (0) أو السالبة (1)، وتُعطى الأعداد غير السالبة تمثيلها غير الموقع (6 هو 0110، والصفر هو 0000)؛ إلا أنه في نظام المتمم الثنائي، تُمثل الأعداد السالبة بأخذ المتمم الثنائي لمقدارها ثم إضافة واحد (-6 هو 1010). ويمكن زيادة عدد البتات في التمثيل عن طريق إضافة 1 أو 0 إلى جميع البتات العليا الإضافية للأعداد السالبة أو الموجبة، على التوالي، أو تقليله عن طريق إزالة 1 أو 0 الزائدة من بداية البتات.

على عكس نظام المتمم الأحادي ، فإن نظام المتمم الثنائي لا يملك سوى تمثيل واحد للصفر، مع إمكانية إضافة عدد سالب واحد (يتراوح نطاق العدد ذي 4 بتات من -8 إلى +7). علاوة على ذلك، يمكن استخدام نفس التطبيقات الحسابية على الأعداد الصحيحة الموقعة وغير الموقعة [ 2 ] ، ولا تختلف إلا في حالات تجاوز سعة العدد الصحيح ، حيث أن مجموع تمثيلات العدد الموجب ومعكوسه يساوي صفرًا (مع ضبط بت الحمل).

إجراء

فيما يلي الإجراء اللازم للحصول على تمثيل المتمم الثنائي لعدد سالب معين بالأرقام الثنائية:

  • الخطوة 1: البدء بالتمثيل الثنائي المطلق للعدد، مع اعتبار البت الأول بت إشارة؛ [ 3 ]
  • الخطوة 2: عكس (أو قلب) جميع البتات - تغيير كل 0 إلى 1، وكل 1 إلى 0؛
  • الخطوة الثالثة: إضافة 1 إلى العدد المعكوس بالكامل، مع تجاهل أي فائض . سيؤدي احتساب الفائض إلى إنتاج قيمة خاطئة للنتيجة.

على سبيل المثال، لحساب العدد العشري -6 في النظام الثنائي من العدد 6 :

  • الخطوة 1: +6 في النظام العشري هو 0110 في النظام الثنائي؛ البت المهم الأيسر (أول 0) هو الإشارة (110 فقط في النظام الثنائي سيكون -2 في النظام العشري).
  • الخطوة 2: اقلب جميع البتات في 0110 ، مما يعطي 1001 .
  • الخطوة 3: أضف القيمة المكانية 1 إلى العدد المقلوب 1001 ، مما يعطي 1010 .

للتحقق من أن العدد 1010 يساوي -6 ، اجمع قيم المنازل، ثم اطرح قيمة الإشارة من الناتج النهائي. ولأن قيمة الإشارة هي الأهم، يجب طرحها للحصول على النتيجة الصحيحة: 1010 = - ( 1 × ) + (0 × 2²) + ( 1 × ) + ( 0 × 2⁰ ) = 1 × -8 + 0 + 1 × 2 + 0 = -6.

أجزاء:1010
قيمة البت العشري:- 8421
الحساب الثنائي:- ( 1 × 2 3 )( 0 ×2 2 )( 1 × 2 1 )( 0 ×2 0 )
الحساب العشري:- ( 1 × 8)01 × 20

تُعدّ الخطوتان 2 و3 معًا طريقةً صحيحةً لحساب المعكوس الجمعي-ن{\displaystyle -n}أي عدد صحيح (موجب أو سالب)ن{\displaystyle n}حيث يكون كل من المدخلات والمخرجات في نظام المتمم الثنائي. بديل لحساب-ن{\displaystyle -n}يتمثل ذلك في استخدام الطرح0-ن{\displaystyle 0-n}انظر أدناه لمعرفة كيفية طرح الأعداد الصحيحة في نظام المتمم الثنائي.

نظرية

تمثيل دوري لقيم الأعداد الصحيحة ذات 4 بتات (باللون الأسود) في حالة عدم وجود إشارة (حلقة بيضاء)، وفي حالة المتمم الأحادي (باللون البرتقالي)، وفي حالة المتمم الثنائي (باللون الأزرق المخضر)، وتأثير إضافة 4 إلى قيمة عشوائية.

المتمم الثنائي مثال على المتمم الأساسي . يشير الرقم "اثنان" في الاسم إلى العدد 2^ N ، أي "اثنان مرفوعًا للأس N"، وهو القيمة التي يُحسب المتمم بالنسبة لها في نظام مكون من N بت (الحالة الوحيدة التي يُنتج فيها "اثنان" بالضبط في هذا المصطلح هي N = 1 ، أي في نظام مكون من 1 بت، ولكن هذه الأنظمة لا تستوعب كلًا من الإشارة والصفر). وبناءً على ذلك، فإن التعريف الدقيق للمتمم الثنائي لعدد مكون من N بت هو متمم ذلك العدد بالنسبة إلى 2^ N .

الخاصية الأساسية لكون العدد مكملاً لعدد ما بالنسبة إلى 2^ N هي ببساطة أن مجموع هذا العدد مع العدد الأصلي ينتج عنه 2^ N . على سبيل المثال، باستخدام النظام الثنائي مع أعداد تصل إلى ثلاثة بتات (أي N = 3 و 2^ N = 2^ 3 = 8 = 1000^ 2 ، حيث يشير ' 2 ' إلى التمثيل الثنائي)، فإن المكمل الثنائي للعدد 3 ( 011^ 2 ) هو 5 ( 101^ 2 )، لأنه عند جمعه مع العدد الأصلي يعطي 2 ^3 = 1000 ^ 2 = 011^ 2 + 101^ 2 . عند استخدام هذا التمثيل لتمثيل الأعداد السالبة، فإنه يعني فعليًا، قياسًا على الأرقام العشرية وفضاء الأعداد الذي لا يسمح إلا بثمانية أعداد غير سالبة من 0 إلى 7، تقسيم فضاء الأعداد إلى مجموعتين: تبقى الأعداد الأربعة الأولى 0 و1 و2 و3 كما هي، بينما تُمثل الأعداد الأربعة المتبقية الأعداد السالبة، مع الحفاظ على ترتيبها التصاعدي، بحيث يُمثل العدد 4 العدد -4، والعدد 5 العدد -3، والعدد 6 العدد -2، والعدد 7 العدد -1. مع ذلك، يتميز التمثيل الثنائي بفائدة إضافية، حيث تُشير البتة الأكثر أهمية أيضًا إلى المجموعة (والإشارة): فهي 0 للمجموعة الأولى من الأعداد غير السالبة، و1 للمجموعة الثانية من الأعداد السالبة. توضح الجداول على اليمين هذه الخاصية.

أعداد صحيحة مكونة من ثلاثة بتات
أجزاءقيمة غير موقعةالقيمة الموقعة (المكمل الثنائي)
٠٠٠00
00111
01022
01133
1004-4
1015-3
1106-2
1117-1
أعداد صحيحة من ثمانية بتات
أجزاءقيمة غير موقعةالقيمة الموقعة (المكمل الثنائي)
0000  000000
0000 000111
0000 001022
0111 1110126126
0111 1111127127
1000 0000128-128
10000001129-127
1000 0010130-126
1111 1110254-2
1111 1111255-1

حساب المتمم الثنائي لعدد موجب يعني أساسًا طرح العدد من 2^ N . ولكن كما هو واضح في مثال الثلاثة بتات والعدد 1000² ( 2 ^ 3 ) ذي الأربعة بتات، فإن العدد 2^ N نفسه لا يمكن تمثيله في نظام محدود بـ N بت، لأنه يقع خارج نطاق N بت (مع ذلك، يُعد هذا العدد نقطة مرجعية لـ "المتمم الثنائي" في نظام N بت). لهذا السبب، يجب على الأنظمة التي تحتوي على N بت كحد أقصى تقسيم عملية الطرح إلى عمليتين: أولًا، الطرح من أكبر عدد في نظام N بت، وهو 2 ^N - 1 (هذا الحد في النظام الثنائي هو في الواقع عدد بسيط يتكون من "جميعها 1"، ويمكن إجراء عملية الطرح منه ببساطة عن طريق عكس جميع بتات العدد، وهي عملية تُعرف أيضًا باسم عملية النفي الثنائية )، ثم إضافة الواحد. ومن المصادفة أن هذا الرقم الوسيط قبل إضافة الواحد يستخدم أيضًا في علوم الكمبيوتر كطريقة أخرى لتمثيل الأرقام الموقعة ويسمى مكمل الواحدات (سمي بذلك لأن جمع مثل هذا الرقم مع الرقم الأصلي يعطي "جميعها 1").

بالمقارنة مع أنظمة تمثيل الأعداد الموقعة الأخرى (مثل نظام المتمم الأحادي )، يتميز نظام المتمم الثنائي بأن العمليات الحسابية الأساسية فيه - الجمع والطرح والضرب - مطابقة لتلك الخاصة بالأعداد الثنائية غير الموقعة (طالما أن المدخلات ممثلة بنفس عدد البتات المستخدمة في المخرجات، ويتم تجاهل أي فائض يتجاوز هذه البتات من النتيجة). هذه الخاصية تجعل النظام أسهل في التنفيذ، خاصةً في العمليات الحسابية عالية الدقة. إضافةً إلى ذلك، وعلى عكس أنظمة المتمم الأحادي، لا يحتوي نظام المتمم الثنائي على تمثيل للصفر السالب ، وبالتالي لا يعاني من الصعوبات المرتبطة به. وبخلاف ذلك، يتمتع كلا النظامين بالخاصية المرغوبة المتمثلة في إمكانية عكس إشارة الأعداد الصحيحة بأخذ متمم تمثيلها الثنائي، إلا أن نظام المتمم الثنائي يستثني أصغر عدد سالب، كما هو موضح في الجداول. [ 4 ]

تاريخ

استُخدمت طريقة المكملات منذ زمن طويل لإجراء عمليات الطرح في آلات الجمع العشرية والآلات الحاسبة الميكانيكية . اقترح جون فون نيومان استخدام تمثيل المكمل الثنائي في مسودته الأولى لتقرير عام 1945 حول اقتراح EDVAC للحاسوب الرقمي الإلكتروني ذي البرنامج المخزن. [ 5 ] استخدم حاسوب EDSAC لعام 1949 ، المستوحى من المسودة الأولى ، تمثيل المكمل الثنائي للأعداد الصحيحة الثنائية السالبة.

تستخدم العديد من الحواسيب القديمة، بما في ذلك CDC 6600 و LINC و PDP-1 وUNIVAC 1107، نظام المتمم الأحادي ؛ واستمرت الحواسيب اللاحقة من سلسلة UNIVAC 1100/2200 في استخدام هذا النظام. (دعمت أجهزة DEC اللاحقة ذات 18 بت كلاً من الجمع بنظام المتمم الأحادي باستخدام تعليمة ADD والحساب بنظام المتمم الثنائي باستخدام تعليمة TAD). تستخدم أجهزة IBM 700/7000 العلمية نظام الإشارة/المقدار، باستثناء سجلات الفهرسة التي تستخدم نظام المتمم الثنائي. من بين الحواسيب التجارية القديمة التي خزنت القيم السالبة بنظام المتمم الثنائي: English Electric DEUCE (1955) و Digital Equipment Corporation PDP-5 (1963) و PDP-6 (1964). (استمرت حواسيب عائلة PDP-5 وPDP-8 في استخدام اختصار لغة التجميع TAD للجمع بنظام المتمم الثنائي، على الرغم من عدم وجود تعليمة ADD بنظام المتمم الأحادي في تلك الحواسيب). أما نظام System/360 ، الذي طرحته شركة IBM عام 1964 ، والتي كانت آنذاك الشركة المهيمنة في صناعة الحواسيب، فقد جعل نظام المتمم الثنائي التمثيل الثنائي الأكثر استخدامًا في هذا المجال. ويستخدم أول حاسوب صغير ، وهو PDP-8 الذي طُرح عام 1965، حسابات المتمم الثنائي، وكذلك حاسوب Data General Nova عام 1969، وحاسوب PDP-11 عام 1970 ، ومعظم الحواسيب الصغيرة والحواسيب الدقيقة اللاحقة.

التحويل من تمثيل المتمم الثنائي

يُشفّر نظام الأعداد المتمم الثنائي الأعداد الموجبة والسالبة في تمثيل ثنائي. وزن كل بت هو قوة من قوى العدد اثنين ، باستثناء البت الأكثر أهمية ، الذي يكون وزنه معكوس القوة المقابلة للعدد اثنين.

قيمة w لعدد صحيح مكون من N بت أشمال-1أشمال-2...أ0{\displaystyle a_{N-1}a_{N-2}\dots a_{0}}ويتم حسابها بالصيغة التالية:

w=-أشمال-12شمال-1+أنا=0شمال-2أأنا2أنا{\displaystyle w=-a_{N-1}2^{N-1}+\sum _{i=0}^{N-2}a_{i}2^{i}}

تُحدد البتة الأكثر أهمية إشارة العدد، وتُسمى أحيانًا بتة الإشارة . على عكس تمثيل الإشارة والمقدار ، فإن بتة الإشارة لها أيضًا الوزن −( 2N − 1 ) الموضح أعلاه. باستخدام N بتة، يمكن تمثيل جميع الأعداد الصحيحة من −( 2N − 1 ) إلى 2N 1 − 1 .

التحويل إلى تمثيل المتمم الثنائي

في نظام المتمم الثنائي، يُمثَّل العدد غير السالب بصيغته الثنائية العادية ؛ وفي هذه الحالة، تكون البتة الأكثر أهمية هي 0. مع ذلك، يختلف نطاق الأعداد المُمثَّلة عن نطاق الأعداد الثنائية غير المُوقَّعة. على سبيل المثال، يمكن لعدد غير مُوقَّع مكون من 8 بتات أن يُمثِّل القيم من 0 إلى 255 (11111111). بينما لا يمكن لعدد مكون من 8 بتات مُمثَّل بنظام المتمم الثنائي أن يُمثِّل إلا الأعداد الصحيحة غير السالبة من 0 إلى 127 (01111111)، لأن بقية تركيبات البتات التي تكون فيها البتة الأكثر أهمية هي 1 تُمثِّل الأعداد الصحيحة السالبة من -1 إلى -128.

عملية المتمم الثنائي هي العملية العكسية الجمعية ، لذا يتم تمثيل الأعداد السالبة بواسطة المتمم الثنائي للقيمة المطلقة .

من متمم الواحدات

للحصول على المتمم الثنائي لعدد ثنائي سالب، يتم عكس جميع البتات ، أو "قلبها"، باستخدام عملية النفي الثنائية ؛ ثم تتم إضافة القيمة 1 إلى القيمة الناتجة، مع تجاهل الفائض الذي يحدث عند أخذ المتمم الثنائي للعدد 0.

على سبيل المثال، باستخدام بايت واحد (= 8 بتات)، يتم تمثيل العدد العشري 5 بواسطة

0000 0101 2

البت الأكثر أهمية (البت الأيسر في هذه الحالة) هو 0، لذا يمثل النمط قيمة غير سالبة. لتحويل القيمة إلى -5 باستخدام نظام المتمم الثنائي، يتم أولاً عكس جميع البتات، أي: يصبح 0 هو 1 ويصبح 1 هو 0.

1111 1010 2

في هذه المرحلة، يكون التمثيل هو المتمم الأحادي للقيمة العشرية -5. وللحصول على المتمم الثنائي، يُضاف 1 إلى النتيجة، فنحصل على:

1111 1011 2

والنتيجة هي عدد ثنائي مُوَقَّع يُمثِّل القيمة العشرية -5 بنظام المتمم الثنائي. البت الأكثر أهمية هو 1، مما يدل على أن القيمة المُمَثَّلة سالبة.

بدلاً من ذلك، بدلاً من إضافة 1 بعد قلب عدد ثنائي موجب، يمكن طرح 1 من العدد قبل قلبه. ويمكن إثبات تكافؤ الطريقتين بسهولة. قلب (متمم الآحاد)x{\displaystyle x}يساوي(2شمال-1)-x{\displaystyle (2^{N}-1)-x}إذن، مجموع المقلوب و1 يساوي(2شمال-1)-x+1={\displaystyle (2^{N}-1)-x+1=}2شمال-x-1+1={\displaystyle 2^{N}-x-1+1=}2شمال-x{\displaystyle 2^{N}-x}، وهو ما يساوي المتمم الثنائي لـx{\displaystyle x}كما هو متوقع. انعكاسx-1{\displaystyle x-1}يساوي(2شمال-1)-(x-1)={\displaystyle (2^{N}-1)-(x-1)=}(2شمال-1)-x+1={\displaystyle (2^{N}-1)-x+1=}2شمال-x{\displaystyle 2^{N}-x}، مطابقة للمعادلة السابقة. في الأساس، يؤدي الطرح المتأصل في عملية القلب إلى تغيير قيمة -1 المضافة إلىx{\displaystyle x}قبل عملية القلب، يُضاف العدد +1 بعد القلب. قد تكون خوارزمية الطرح والقلب البديلة هذه، لتكوين المتمم الثنائي، مفيدة أحيانًا في برمجة الحاسوب أو تصميم الأجهزة، على سبيل المثال عندما يمكن الحصول على طرح 1 مجانًا من خلال دمجه في عملية سابقة. [ 6 ]

المتمم الثنائي لعدد سالب هو قيمته الموجبة المقابلة، باستثناء حالة العدد الأكثر سلبية . على سبيل المثال، عكس بتات العدد -5 (أعلاه) يعطي:

0000 0100 2

وإضافة واحد تعطي القيمة النهائية:

0000 0101 2

المتمم الثنائي لأكثر عدد سالب يمكن تمثيله (مثلاً، الرقم واحد كأكثر البتات أهمية وباقي البتات أصفار) هو نفسه. لذا، يوجد عدد سالب "إضافي" لا يُعطي المتمم الثنائي نفيه، انظر §  أكثر عدد سالب أدناه.

حالة العدد الأكثر سالبية هي إحدى حالتين خاصتين فقط. الحالة الخاصة الأخرى هي الصفر، الذي يكون مكمله الثنائي صفرًا: قلبه يعطي جميع الآحاد، وإضافة واحد يعيد الآحاد إلى أصفار (لأن الفائض يُتجاهل). رياضيًا، في نظام المكمل الثنائي للأعداد الصحيحة الموقعة (الذي يمثل معكوس كل عدد كمكمله الثنائي)، هذا صحيح بشكل واضح: معكوس الصفر هو في الواقع صفر (-0=0{\displaystyle -0=0}). هذه الحالة الصفرية منطقية أيضًا وفقًا لتعريف المتمم الثنائي: فبحسب هذا التعريف، سيكون المتمم الثنائي للصفر هو2شمال-0=2شمال{\displaystyle 2^{N}-0=2^{N}}لكن فيشمال{\displaystyle N}البتات، جميع القيم مأخوذة بتردد صفري2شمال{\displaystyle 2^{N}}، و2شمال{\displaystyle 2^{N}}تعديل2شمال=0{\displaystyle 2^{N}=0}بمعنى آخر، المتمم الثنائي للصفر فيشمال{\displaystyle N}البتات (بحسب التعريف) هي بت واحد قيمته 1 متبوعًا بـشمال{\displaystyle N}أصفار، ولكن يتم اقتطاع الرقم 1، فيتبقى 0. [ 7 ]

باختصار، يمكن حساب المتمم الثنائي لأي عدد، سواء كان موجبًا أو سالبًا أو صفرًا، بنفس الطرق. في تمثيل الأعداد الصحيحة الموقعة باستخدام المتمم الثنائي، يكون المتمم الثنائي لأي عدد صحيح مساويًا لـ -1 مضروبًا في ذلك العدد، باستثناء العدد الصحيح الأكثر سالبية الذي يمكن تمثيله بعدد البتات المحدد.شمال{\displaystyle N}أي العدد الصحيح-2شمال-1{\displaystyle -2^{N-1}}، ومكمله هو نفسه (لا يزال سالباً).

الطرح من 2 نيوتن

مجموع عدد ومتممه الأحادي هو كلمة من N بت، جميع بتاتها تساوي 1، وهي (تُقرأ كعدد ثنائي غير مُوَقَّع) 2^ N - 1. ثم، بإضافة عدد إلى متممه الثنائي، تكون البتات N الأدنى قيمةً تساوي 0، وبت الحمل يساوي 1، حيث يكون وزن الأخير (يُقرأ كعدد ثنائي غير مُوَقَّع) 2^ N . وبالتالي، في الحساب الثنائي غير المُوَقَّع ، فإن قيمة العدد السالب x * ذي المتمم الثنائي لعدد موجب x تحقق المعادلة x * = 2^ N - x .

على سبيل المثال، لإيجاد التمثيل المكون من أربع بتات للعدد -5 (تشير الرموز السفلية إلى أساس التمثيل ):

x = 5 10 ، إذن x = 0101 2

وبالتالي، مع N = 4 :

x * = 2 Nx = 2 4 − 5 10 = 16 10 − 5 10 = 10000 2 − 0101 2 = 1011 2

يمكن إجراء الحساب بالكامل باستخدام النظام العشري، ثم التحويل إلى النظام الثنائي في النهاية:

x * = 2 Nx = 2 4 − 5 10 = 11 10 = 1011 2

العمل من LSB نحو MSB

لتحويل عدد ثنائي إلى مكمله الثنائي يدويًا، يُمكن البدء من البت الأقل أهمية (LSB)، ونسخ جميع الأصفار، ثم الانتقال من LSB إلى البت الأكثر أهمية (MSB) حتى  الوصول إلى أول 1؛ ثم نسخ هذا الرقم  1، وعكس جميع البتات المتبقية (مع ترك MSB كما هو 1 إذا كان العدد الأصلي ممثلًا بنظام الإشارة والمقدار). تُمكّن هذه الطريقة المختصرة من تحويل العدد إلى مكمله الثنائي دون الحاجة إلى تحويله أولًا إلى مكمله الأحادي. على سبيل المثال: في تمثيل المكمل الثنائي، يكون نفي العدد "0011  1100" هو "1100  0 100 "، حيث لم تتغير الأرقام التي تحتها خط أثناء عملية النسخ (بينما تم عكس بقية الأرقام).

في دوائر الحاسوب، لا تُعدّ هذه الطريقة أسرع من طريقة "المُكمِّل وإضافة واحد"؛ إذ تتطلب كلتا الطريقتين العمل بالتسلسل من اليمين إلى اليسار، مع نقل التغييرات المنطقية. ويمكن تسريع طريقة المُكمِّل وإضافة واحد باستخدام دائرة جمع قياسية ذات نظرة استباقية للحمل ؛ كما يمكن تسريع طريقة التحويل من البت الأقل أهمية إلى البت الأكثر أهمية باستخدام تحويل منطقي مماثل.

امتداد اللافتة

تكرار بت الإشارة في الأعداد الصحيحة ذات 7 و 8 بت باستخدام المتمم الثنائي
عشريتدوين 7 بتتدوين 8 بت
-42 10101101101 0110
42 0101010٠٠١٠ ١٠١٠

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

وبالمثل، عند إزاحة عدد إلى اليمين، يجب الحفاظ على البت الأكثر أهمية، الذي يحتوي على معلومات الإشارة. أما عند إزاحته إلى اليسار، فيتم حذف بت. تحافظ هذه القواعد على الدلالات العامة، حيث أن الإزاحة إلى اليسار تضرب العدد في اثنين، والإزاحة إلى اليمين تقسمه على اثنين. مع ذلك، إذا تغير البت الأكثر أهمية من 0 إلى 1 (والعكس صحيح)، يُقال إن تجاوز السعة قد حدث في حالة كون القيمة عددًا صحيحًا مُوَقَّعًا.

يُعدّ كلٌّ من الإزاحة ومضاعفة الدقة مهمّين لبعض خوارزميات الضرب. وعلى عكس الجمع والطرح، فإنّ تمديد العرض والإزاحة إلى اليمين يتمّان بشكل مختلف للأعداد الموقّعة وغير الموقّعة.

الرقم السالب الأكثر

باستثناء حالة واحدة فقط، بدءًا من أي عدد في تمثيل المتمم الثنائي، إذا تم قلب جميع البتات وإضافة 1، نحصل على تمثيل المتمم الثنائي لسالب ذلك العدد.  يصبح العدد 12 الموجب سالب  12،  ويصبح العدد 5 الموجب سالب  5، ويصبح الصفر صفرًا (مع تجاوز السعة)، وهكذا.

المتمم الثنائي هو -128
-1281000 0000
عكس البتات0111 1111
أضف واحداً1000 0000
والنتيجة هي نفس  الرقم الثنائي المكون من 8 بت.

لن يؤدي حساب المتمم الثنائي (النفي) لأصغر عدد في النطاق إلى عكس العدد المطلوب. على سبيل المثال، المتمم الثنائي للعدد -128 في نظام ثماني بتات هو -128  ، كما هو موضح في الجدول على اليمين . على الرغم من أن النتيجة المتوقعة من عكس -128 هي +128  ، إلا أنه لا يوجد تمثيل للعدد +128 في نظام المتمم الثنائي ذي الثماني بتات، وبالتالي يستحيل تمثيل عكسه. يُعتبر كون المتمم الثنائي هو نفسه العدد حالة تجاوز، نظرًا لوجود بتة حمل داخلة ولكن ليس خارجة من البت الأكثر أهمية.

إن كون عدد غير صفري مساويًا لنفيه أمرٌ مفروغ منه، نظرًا لأن الصفر هو نفيه، ولأن العدد الإجمالي للأعداد زوجي. البرهان: يوجد 2^n − 1 عددًا غير صفري (وهو عدد فردي). يُقسّم النفي الأعداد غير الصفرية إلى مجموعات ثنائية، لكن هذا سيؤدي إلى أن تكون مجموعة الأعداد غير الصفرية زوجية العدد. لذا، فإن إحدى المجموعات على الأقل أحادية العدد، أي أن العدد غير الصفري هو نفيه.

قد يؤدي وجود أكبر عدد سالب إلى أخطاء برمجية غير متوقعة، حيث تكون إشارة النتيجة غير متوقعة، أو يؤدي إلى استثناء تجاوز غير متوقع، أو يؤدي إلى سلوكيات غريبة تمامًا. على سبيل المثال،

  • لا يجوز لعامل النفي الأحادي تغيير إشارة عدد غير صفري. على سبيل المثال، −(−128)   −128  (حيث تُقرأ " ⟼ " على أنها "يصبح").
  • قد يؤدي تطبيق القيمة المطلقة إلى إرجاع عدد سالب؛ [ 8 ] على سبيل المثال،  abs(−128)   −128  .
  • وبالمثل، قد لا تعمل عملية الضرب في -1 كما هو متوقع؛ على سبيل المثال، (-128) × (-1) -128 .    
  • قد يؤدي القسمة على -1 إلى حدوث استثناء (مثل ذلك الذي يحدث عند القسمة على 0[ 9 ] حتى حساب الباقي (أو باقي القسمة ) على -1 يمكن أن يؤدي إلى حدوث هذا الاستثناء؛ [ 10 ] على سبيل المثال، (-128) ÷ (-1)  [ تعطل ] ،   (-128) % (-1) [ تعطل ] .     

في لغتي البرمجة C و C++ ، تُعتبر السلوكيات المذكورة أعلاه غير مُعرَّفة ، ولا تقتصر المشكلة على إمكانية إرجاعها نتائج غير متوقعة، بل يحق للمُصرِّف افتراض أن المبرمج قد ضمن عدم حدوث عمليات حسابية غير مُعرَّفة، واستخلاص استنتاجات بناءً على هذا الافتراض. [ 10 ] يُتيح هذا الأمر عددًا من التحسينات، ولكنه يؤدي أيضًا إلى ظهور عدد من الأخطاء الغريبة في البرامج التي تحتوي على هذه العمليات الحسابية غير المُعرَّفة.

يُطلق على هذا العدد السالب الأقصى في نظام المتمم الثنائي  أحيانًا اسم "العدد الغريب"، لأنه الاستثناء الوحيد. [ 11 ] [ 12 ] على الرغم من كونه استثناءً، إلا أنه عدد صحيح في  أنظمة المتمم الثنائي العادية. جميع العمليات الحسابية تعمل معه كمعامل وكنتيجة (إلا في حالة حدوث تجاوز).

لماذا ينجح؟

بفرض وجود مجموعة من جميع القيم الممكنة المكونة من N بت، يمكننا تخصيص النصف السفلي (بحسب القيمة الثنائية) للأعداد الصحيحة من 0 إلى ( 2N - 1 - 1) شاملةً، والنصف العلوي للأعداد من -2N - 1 إلى -1 شاملةً. يمكن استخدام النصف العلوي (أيضًا بحسب القيمة الثنائية) لتمثيل الأعداد الصحيحة السالبة من -2N - 1 إلى -1 ، لأنها تتصرف بنفس طريقة الأعداد الصحيحة السالبة عند الجمع بتردد 2N . أي أنه بما أن i + j mod 2N = i + ( j + 2N ) mod 2N ، فإنه يمكن استخدام أي قيمة في المجموعة { j + k 2N | k عدد صحيح} بدلًا من j . [ 13 ] 

على سبيل المثال، مع ثمانية بتات، تكون البايتات غير الموقعة من 0 إلى 255. طرح 256 من النصف العلوي (من 128 إلى 255) ينتج عنه البايتات الموقعة من -128 إلى -1.

يتم إدراك العلاقة بالمتمم الثنائي من خلال ملاحظة أن 256 = 255 + 1 ، و (255 − x ) هو المتمم الأحادي لـ x . 

بعض الأرقام الخاصة
عشريثنائي (8 بت)
127 0111 1111
64 0100 0000
1 0000 0001
0 0000 0000
-1 1111 1111
-64 1100 0000
-127 10000001
-128 1000 0000

مثال

على سبيل المثال،  يمكن لعدد مكون من 8 بتات أن يمثل فقط كل عدد صحيح من -128 إلى 127، شاملةً، لأن (2 ^8 - 1 = 128) . و -95 بتردد 256 يكافئ 161.

-95. + 256.
= -95 + 255 + 1
= 255. − 95. + 1
= 160. + 1.
= 161.
 1111 1111 255. − 0101 1111 − 95. =========== ===== 1010 0000 (متمم الآحاد) 160. + 1 + 1 =========== ===== 1010 0001 (متمم ثنائي) 161. 
 قيم عددية صحيحة مكونة من 4 بتات باستخدام نظام المتمم الثنائي
متمم الاثنينعشري
01117.
01106.
01015.
01004.
00113.
00102.
٠٠٠١1.
00000.
1111-1.
1110-2.
1101-3.
1100-4.
1011-5.
1010-6.
1001-7.
1000-8.

بشكل أساسي، يُمثل النظام الأعداد الصحيحة السالبة بالعد التنازلي والالتفاف حول نقطة الصفر. الحد الفاصل بين الأعداد الموجبة والسالبة اعتباطي، ولكن اصطلاحًا، جميع الأعداد السالبة يكون بتها الأيسر ( البت الأكثر أهمية ) مساويًا للواحد. لذلك، فإن أكبر عدد موجب مكون من أربعة بتات هو 0111  (7.)، وأكبر عدد سالب هو 1000 (-8.). نظرًا لاستخدام البت الأيسر كبت إشارة، فإن القيمة المطلقة لأكبر عدد سالب (|-8.| = 8.) كبيرة جدًا بحيث لا يمكن تمثيلها. نفي عدد مكمل ثنائي بسيط: اعكس جميع البتات وأضف واحدًا إلى الناتج. على سبيل المثال، نفي 1111، نحصل على 0000 + 1 = 1. لذلك، يجب أن يُمثل 1111 في النظام الثنائي -1 في النظام العشري. [ 14 ]

يُسهّل هذا النظام تنفيذ العمليات الحسابية على أجهزة الحاسوب. قد يبدو للوهلة الأولى أن جمع 0011  (3.) مع 1111  (-1.) يُعطي نتيجة خاطئة وهي 10010. مع ذلك، يُمكن للجهاز تجاهل البت الأيسر ببساطة ليعطي النتيجة الصحيحة وهي 0010  (2.). ولا تزال هناك حاجة إلى آليات للتحقق من تجاوز السعة لاكتشاف عمليات مثل جمع 0100 و0100.

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

العمليات الحسابية

إضافة

لا يتطلب جمع الأعداد بنظام المتمم الثنائي أي معالجة خاصة حتى لو كانت إشارات المعاملات متعاكسة؛ إذ تُحدد إشارة النتيجة تلقائيًا. على سبيل المثال، جمع 15 و -5:

 0000 1111 (15) + 1111 1011 (−5) =========== 0000 1010 (10) 

أو حساب 5 − 15 = 5 + (−15):

 0000 0101 ( 5) + 1111 0001 (−15) =========== 1111 0110 (−10) 

تعتمد هذه العملية على التقييد بـ 8 بتات من الدقة؛ يتم تجاهل الحمل إلى البت التاسع الأكثر أهمية (غير الموجود)، مما ينتج عنه النتيجة الصحيحة حسابيًا وهي 10 10 .

تحتوي آخر بتين في صف الحمل (عند القراءة من اليمين إلى اليسار) على معلومات بالغة الأهمية: ما إذا كانت العملية الحسابية قد نتج عنها تجاوز حسابي ، أي عدد أكبر من أن يُمثله النظام الثنائي (في هذه الحالة، أكبر من 8 بتات). يحدث التجاوز عندما يختلف هذان البتان الأخيران عن بعضهما. وكما ذُكر سابقًا، تُشفّر إشارة العدد في البت الأكثر أهمية (MSB) للنتيجة.

بمعنى آخر، إذا كانت قيمتا بت الحمل الأيسر (القيمتان الموجودتان في أقصى يسار الصف العلوي في هذه الأمثلة) إما 1 أو 0، فإن النتيجة صحيحة؛ أما إذا كانت قيمتا بت الحمل الأيسر "1 0" أو "0 1"، فقد حدث تجاوز للإشارة. ولحسن الحظ، يمكن لعملية XOR على هاتين القيمتين تحديد ما إذا كانت حالة التجاوز موجودة بسرعة. على سبيل المثال، لننظر إلى عملية جمع 7 و3 ذات 4 بتات ذات إشارة:

 0111 (حمل) 0111 (7) + 0011 (3) ====== 1010 (-6) غير صالح! 

في هذه الحالة، يكون بتّا الحمل (MSB) في أقصى اليسار هما "01"، مما يعني حدوث تجاوز في عملية الجمع بنظام المتمم الثنائي. أي أن 1010 2 = 10 10 يقع خارج النطاق المسموح به من -8 إلى 7. ستكون النتيجة صحيحة إذا تم التعامل معها كعدد صحيح غير مُوَقَّع.

بشكل عام، يمكن جمع أي عددين مكونين من N بت دون حدوث تجاوز، وذلك بتمديد إشارة كل منهما إلى N + 1 بت، ثم جمعهما كما سبق. تكون نتيجة N + 1 بت كبيرة بما يكفي لتمثيل أي مجموع ممكن (حيث N = 5، ويمكن لتمثيل المكمل الثنائي أن يمثل قيمًا في النطاق من -16 إلى 15)، لذا لن يحدث تجاوز أبدًا. بعد ذلك، يمكن، إذا رغبنا، "اقتطاع" النتيجة إلى N بت مع الحفاظ على القيمة، بشرط أن يكون البت المهمل تمديدًا صحيحًا لإشارة بتات النتيجة المحفوظة. يوفر هذا طريقة أخرى للكشف عن التجاوز - وهي مكافئة لطريقة مقارنة بتات الحمل - ولكنها قد تكون أسهل في التنفيذ في بعض الحالات، لأنها لا تتطلب الوصول إلى تفاصيل عملية الجمع.

الطرح

تستخدم الحواسيب عادةً طريقة المتممات لتنفيذ عملية الطرح. يرتبط استخدام المتممات في الطرح ارتباطًا وثيقًا باستخدامها في تمثيل الأعداد السالبة، إذ يسمح هذا الأسلوب باستخدام جميع إشارات المعاملات والنتائج؛ كما يُمكن إجراء الطرح المباشر مع الأعداد المُمثلة بنظام المتمم الثنائي. وكما هو الحال في الجمع، تكمن ميزة استخدام المتمم الثنائي في الاستغناء عن فحص إشارات المعاملات لتحديد ما إذا كانت العملية جمعًا أم طرحًا. على سبيل المثال، طرح -5 من 15 هو في الواقع جمع 5 إلى 15، ولكن هذا الأمر غير واضح في تمثيل المتمم الثنائي.

 11110 000 (اقتراض) 0000 1111 (15) − 1111 1011 (−5) =========== 0001 0100 (20) 

يتم اكتشاف تجاوز السعة بنفس طريقة الجمع، من خلال فحص البتتين الموجودتين في أقصى اليسار (الأكثر أهمية) من عمليات الاستعارة؛ يحدث تجاوز السعة إذا كانت مختلفة.

مثال آخر هو عملية طرح تكون نتيجتها سالبة: 15   35 = −20:

 11100000 (اقتراض) 0000 1111 (15) - 0010 0011 (35) =========== 1110 1100 (−20) 

أما بالنسبة للجمع، فيمكن تجنب تجاوز السعة في الطرح (أو اكتشافه بعد العملية) عن طريق تمديد الإشارة لكلا المدخلين ببت إضافي.

الضرب

يتطلب حاصل ضرب عددين مكونين من N بت 2^ N بت لاحتواء جميع القيم الممكنة. [ 15 ]

إذا تضاعفت دقة المعاملين باستخدام نظام المتمم الثنائي قبل عملية الضرب، فإن الضرب المباشر (مع تجاهل أي بتات زائدة تتجاوز تلك الدقة) سيعطي النتيجة الصحيحة. [ 16 ] على سبيل المثال، خذ 6 × (-5) = -30 . أولًا، يتم توسيع الدقة من أربعة بتات إلى ثمانية. ثم يتم ضرب العددين، مع تجاهل البتات التي تتجاوز البت الثامن (كما هو موضح بـ " x ").

 00000110 (6) * 11111011 (−5) ============ 110 1100 00000 110000 1100000 11000000 x10000000 + xx00000000 ============ xx11100010 

هذه الطريقة غير فعّالة للغاية؛ فبمضاعفة الدقة مسبقًا، يجب أن تكون جميع عمليات الجمع ذات دقة مضاعفة، ويتطلب الأمر ضعف عدد نواتج الضرب الجزئية على الأقل مقارنةً بالخوارزميات الأكثر كفاءة المُطبقة فعليًا في الحواسيب. صُممت بعض خوارزميات الضرب لنظام المتمم الثنائي، ولا سيما خوارزمية بوث للضرب . لا تعمل طرق ضرب الأعداد ذات الإشارة والمقدار مع أعداد المتمم الثنائي دون تعديل. لا توجد عادةً مشكلة عندما يكون المضروب (العدد الذي يُضاف بشكل متكرر لتكوين الناتج) سالبًا؛ تكمن المشكلة في ضبط البتات الأولية للناتج بشكل صحيح عندما يكون المضروب سالبًا. هناك طريقتان شائعتان لتكييف الخوارزميات للتعامل مع أعداد المتمم الثنائي:

  • تحقق أولاً مما إذا كان المضاعف سالباً. إذا كان كذلك، فانفِي إشارة كلا المعاملين (أي، خذ المتمم الثنائي) قبل الضرب. سيصبح المضاعف موجباً حينها، وبالتالي ستعمل الخوارزمية. ولأن كلا المعاملين معفيان، ستظل النتيجة تحمل الإشارة الصحيحة.
  • اطرح الناتج الجزئي الناتج عن بت الإشارة الأكثر أهمية (بت الإشارة الزائفة) بدلاً من إضافته كما هو الحال مع النواتج الجزئية الأخرى. تتطلب هذه الطريقة تمديد بت الإشارة للمضروب بمقدار خانة واحدة، مع الحفاظ عليه أثناء عمليات الإزاحة إلى اليمين. [ 17 ]

كمثال على الطريقة الثانية، لنأخذ خوارزمية الجمع والإزاحة الشائعة للضرب. فبدلاً من إزاحة نواتج الضرب الجزئية إلى اليسار كما هو الحال عند استخدام القلم والورقة، يُزاح الناتج المتراكم إلى اليمين، إلى سجل ثانٍ سيحتوي في النهاية على النصف الأقل أهمية من الناتج. وبما أن البتات الأقل أهمية لا تتغير بعد حسابها، يمكن أن تكون عمليات الجمع أحادية الدقة، وتتراكم في السجل الذي سيحتوي في النهاية على النصف الأكثر أهمية من الناتج. في المثال التالي، عند ضرب 6 في -5، يتم فصل السجلين وبت الإشارة الموسع بالرمز "|".

 0 0110 (6) (المضروب مع بت الإشارة الموسع) × 1011 (−5) (المضاعف) =|====|==== 0|0110|0000 (أول ناتج جزئي (البت الأيمن هو 1)) 0|0011|0000 (إزاحة لليمين، مع الحفاظ على بت الإشارة الممتد) 0|1001|0000 (إضافة الناتج الجزئي الثاني (البت التالي هو 1)) 0|0100|1000 (إزاحة لليمين، مع الحفاظ على بت الإشارة الممتد) 0|0100|1000 (أضف الناتج الجزئي الثالث: 0، لذا لا يوجد تغيير) 0|0010|0100 (إزاحة لليمين، مع الحفاظ على بت الإشارة الممتد) 1|1100|0100 (اطرح الناتج الجزئي الأخير لأنه من بت الإشارة) 1|1110|0010 (إزاحة لليمين، مع الحفاظ على بت الإشارة الممتد) |1110|0010 (تجاهل بت الإشارة الممتد، مما يعطي الإجابة النهائية، -30) 

المقارنة (الترتيب)

تُنفَّذ المقارنة غالبًا باستخدام طرح وهمي، حيث تُفحص العلامات في سجل حالة الحاسوب ، ولكن تُتجاهل النتيجة الرئيسية. تشير علامة الصفر إلى ما إذا كانت القيمتان المُقارنتان متساويتين. إذا كانت نتيجة عملية XOR بين علامتي الإشارة والفيضان تساوي 1، فإن نتيجة الطرح كانت أقل من الصفر، وإلا فإن النتيجة كانت صفرًا أو أكبر. تُنفَّذ هذه الفحوصات عادةً في الحواسيب ضمن تعليمات التفرع الشرطي .

يمكن ترتيب الأرقام الثنائية غير الموقعة بترتيب معجمي بسيط ، حيث يتم تعريف قيمة البت 0 على أنها أقل من قيمة البت 1. بالنسبة لقيم المتمم الثنائي، يتم عكس معنى البت الأكثر أهمية (أي أن 1 أقل من 0).

تقوم الخوارزمية التالية (لبنية متمم ثنائي مكونة من n بت) بتعيين سجل النتيجة R إلى -1 إذا كان A < B، وإلى +1 إذا كان A > B، وإلى 0 إذا كان A و B متساويين:

// مقارنة معكوسة لبت الإشارةإذا كانت A ( n - 1 ) = 0 و B ( n - 1 ) = 1 ، فأرجع +1 ؛ وإلا إذا كانت A ( n - 1 ) = 1 و B ( n - 1 ) = 0 ، فأرجع -1 . // مقارنة البتات المتبقيةfor i := n - 2 downto 0 do begin if A ( i ) = 0 and B ( i ) = 1 then return - 1 else if A ( i ) = 1 and B ( i ) = 0 then return + 1 end end return 0

المتمم الثنائي والأعداد الثنائية

في بحث كلاسيكي نُشر في مجلة HAKMEM من قِبل مختبر الذكاء الاصطناعي في معهد ماساتشوستس للتكنولوجيا عام 1972، أشار بيل جوسبر إلى أنه يمكن تحديد ما إذا كان التمثيل الداخلي للآلة يُمثل نظام المتمم الثنائي أم لا، وذلك بجمع القوى المتتالية للعدد اثنين. وفي سياق خياله، أشار إلى أن نتيجة هذا التحليل الجبري تُشير إلى أن "الجبر يُجرى على آلة (الكون) تُمثل نظام المتمم الثنائي". [ 18 ]

لا يُقصد بالضرورة أن تُؤخذ خاتمة جوسبر على محمل الجد، وهي أشبه بنكتة رياضية . الخطوة الحاسمة هي "...110 = ...111   1"، أي "2X = X   1  "، وبالتالي X  =  ...111  =  −1. يفترض هذا وجود طريقة تُعتبر بموجبها سلسلة لانهائية من الآحاد عددًا، وهو ما يتطلب توسيعًا لمفاهيم القيمة المكانية المحدودة في الحساب الابتدائي . يكون هذا ذا معنى سواءً كجزء من تدوين المتمم الثنائي لجميع الأعداد الصحيحة، أو كعدد نموذجي ثنائي ، أو حتى كأحد المجاميع المعممة المعرفة لسلسلة الأعداد الحقيقية المتباعدة 1 + 2 + 4 + 8 + ... [ 19 ] تُنتج دوائر الحساب الرقمي، المصممة للعمل مع سلاسل بتات لا نهائية (تمتد إلى قوى موجبة للعدد 2)، عمليات جمع وضرب ثنائية متوافقة مع تمثيل المتمم الثنائي. [ 20 ] كما أن استمرارية العمليات الحسابية الثنائية وعمليات البت في النظام المتري الثنائي لها بعض الاستخدامات في علم التشفير. [ 21 ]

تحويل الكسور

لتحويل عدد يحتوي على جزء كسري ، مثل 0.0101، يجب تحويل الرقم 1 من اليمين إلى اليسار إلى النظام العشري كما في التحويل العادي. في هذا المثال، 0101 يساوي 5 في النظام العشري. يمثل كل رقم بعد الفاصلة العشرية كسرًا مقامه مضاعف للعدد 2. لذا، الأول هو 1/2، والثاني هو 1/4، وهكذا. بعد حساب القيمة العشرية كما ذُكر سابقًا، يُستخدم فقط مقام الرقم الأقل أهمية (LSB = بدءًا من اليمين). والنتيجة النهائية لهذا التحويل هي 5/16.

على سبيل المثال، إذا كانت القيمة العشرية 0.0110 لكي تنجح هذه الطريقة، فلا ينبغي اعتبار الصفر الأخير من اليمين. لذا، بدلاً من حساب القيمة العشرية لـ 0110، نحسب القيمة 011، وهي 3 بالنظام العشري (بترك الصفر في النهاية، لكانت النتيجة 6، مع المقام 2/4 =  16  ، والذي يُختزل إلى 3/8). المقام هو 8، مما يعطي نتيجة نهائية 3/8.

انظر أيضاً

ملحوظات

  1. بالنسبة لـ x = 0 لدينا 2 N − 0 = 2 N ، وهو ما يعادل 0* = 0 modulo 2 N (أي بعد التقييد إلى N بت الأقل أهمية).

مراجع

  1. مثال: "الأعداد الصحيحة الموقعة هي قيم ثنائية بنظام المتمم الثنائي، ويمكن استخدامها لتمثيل كل من القيم الصحيحة الموجبة والسالبة"، القسم 4.2.1 في دليل مطوري برامج معمارية Intel 64 و IA-32 ، المجلد 1: المعمارية الأساسية، نوفمبر 2006
  2. ^ بيرجيل ، الكسندر. كاسو، داميان؛ دوكاس، ستيفان؛ لافال، يانيك (2013). في أعماق فارو (PDF) . ص. 337. 
  3. "المكمل الثنائي" (ملف PDF) . مركز النجاح الأكاديمي بجامعة روتشستر .
  4. ليليا، ديفيد جيه؛ ساباتنيكار، ساشين إس. (2005). تصميم أنظمة الحاسوب الرقمية باستخدام فيريلوج . مطبعة جامعة كامبريدج. ISBN 9780521828666.
  5. فون نيومان، جون (1945)، المسودة الأولى لتقرير عن EDVAC (ملف PDF) ، تم الاطلاع عليه في 20 فبراير 2021
  6. ... على سبيل المثال، عن طريق تقليل ثابت مضاف بمقدار 1، أو زيادة ثابت مطروح بمقدار 1، أو ضبط علامة الحمل/الاستلاف قبل عملية الطرح مع الاستلاف. على سبيل المثال، لحساب-(م+4){\displaystyle -(m+4)}بدلاً من إضافة 4 إلىم{\displaystyle m}وبقلب النتيجة، ثم إضافة 1، يمكن ببساطة إضافة 3 (= 4 − 1) إلىم{\displaystyle m}ثم اعكس النتيجة. (بالطبع، من الممكن أيضًا، باستخدام طريقة العكس والجمع، عكسم{\displaystyle m}أولاً، ثم اطرح 3 [وهو ما يعادل جمع −3 = −4 + ​​1].
  7. الصفر هو القيمة الوحيدة التي عند جمعها مع مكملها الثنائي، باستخدام الحساب الثنائي (النمطي)، لا يساوي مجموعها صفرًا.2شمال{\displaystyle 2^{N}}لكن لاحظ أنه في الحساب modulo2شمال{\displaystyle 2^{N}}،0{\displaystyle 0}متطابق مع2شمال{\displaystyle 2^{N}}.
  8. "الرياضيات" . مواصفات واجهة برمجة التطبيقات. منصة جافا SE 7. 
  9. ريغير، جون (2013). "لا أحد يتوقع أن تُقسم محاكم التفتيش الإسبانية، أو INT_MIN، على -1" . Regehr.org (مدونة).
  10. 1 2 سيكورد، روبرت سي. (2020). "التأكد من أن العمليات على الأعداد الصحيحة الموقعة لا تؤدي إلى تجاوز السعة" . القاعدة INT32-C. wiki.sei.cmu.edu . معيار ترميز SEI CERT C. 
  11. أفيلدت، رينالد ومارتي، نيكولاس (2006). التحقق الرسمي من الدوال الحسابية في لغة التجميع SmartMIPS (ملف PDF) (تقرير). مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 22-07-2011.
  12. هاريس، ديفيد موني؛ هاريس، سارة ل. (2007). التصميم الرقمي وهندسة الحاسوب . مورغان كوفمان. ص 18. ISBN  978-0-08-054706-0 عبر كتب جوجل.
  13. "3.9. المتمم الثنائي" . الفصل 3. تمثيل البيانات . cs.uwm.edu. 2012-12-03. مؤرشف من الأصل في 31 أكتوبر 2013. تم الاطلاع عليه في 22 يونيو 2014 .
  14. فينلي، توماس (أبريل 2000). "المتمم الثنائي" . علوم الحاسوب. ملاحظات صفية لمقرر علوم الحاسوب 104. إيثاكا، نيويورك: جامعة كورنيل . تاريخ الاسترجاع: 22 يونيو 2014 . 
  15. برونو بيلارد. مقدمة لمعالجات الإشارات الرقمية ، ثانية. 6.4.2. تقرير جيني الكهربائية والمعلوماتية، جامعة شيربروك، أبريل 2004.
  16. كارين ميلر (24 أغسطس/آب 2007). "ضرب المتمم الثنائي" . cs.wisc.edu . مؤرشف من الأصل في 13 فبراير/شباط 2015. تم الاطلاع عليه في 13 أبريل/نيسان 2015 .
  17. ويكرلي، جون ف. (2000). مبادئ وممارسات التصميم الرقمي ( الطبعة الثالثة). برنتيس هول. ص 47. ISBN   0-13-769191-2.
  18. "حيل البرمجة" . هاكميم . البند 154 (جوسبر). مؤرشف من الأصل بتاريخ 24-02-2024.
  19. للاطلاع على مجموع 1 + 2 + 4 + 8 + ... دون اللجوء إلى المقياس الثنائي، انظر: هاردي، جي إتش (1949). المتسلسلات المتباعدة . مطبعة كلارندون. الصفحات 7-10 . LCC QA295 .H29 1967 .    
  20. فيليمين، جان (1993). "الفصل 7". حول الدوائر والأعداد (ملف PDF) . باريس: شركة ديجيتال إكويبمنت . ص 19. تاريخ الاسترجاع: 29-03-2023 . انظر تحديداً الفصل 7.3 الخاص بالضرب.
  21. أناشين، فلاديمير؛ بوغدانوف، أندريه؛ كيزفاتوف، إيليا (2007). "شفرة ABC Stream" . الجامعة الروسية الحكومية للعلوم الإنسانية . تاريخ الاسترجاع: 24 يناير 2012 .

للمزيد من القراءة

  • شرح نظام المتمم الثنائي (توماس فينلي، 2000)
  • كورين، إسرائيل (2002). الخوارزميات الحسابية للكمبيوتر . ايه كيه بيترز. رقم ISBN 1-56881-160-8.
  • فلوريس، إيفان (1963). منطق الحساب الحاسوبي . برنتيس هول.