مكمل الواحدات

الأعداد الصحيحة ذات المتمم الواحدي المكونة من ثلاثة بتات
أجزاءقيمة غير موقعةقيمة المتمم الواحدي
٠٠٠00
00111
01022
01133
1004-3
1015-2
1106-1
1117-0
أعداد صحيحة ذات 8 بت بنظام المتمم الواحدي
أجزاءقيمة غير موقعةقيمة المتمم الواحدي
0000  00000 0
0000 00011 1
0000 00102 2
0111 1110126 126
0111 1111127 127
1000 0000128 -127
10000001129 -126
1111 1101253 -2
1111 1110254 -1
1111 1111255 -0
تمثيل دوري لقيم الأعداد الصحيحة ذات 4 بتات (باللون الأسود) في حالة عدم وجود إشارة (حلقة بيضاء)، وفي حالة المتمم الأحادي (باللون البرتقالي)، وفي حالة المتمم الثنائي (باللون الأزرق المخضر)، وتأثير إضافة 4 إلى قيمة عشوائية.

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

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

يتميز نظام العد الثنائي المكمل للآحاد بأن مكمل البتات لأي عدد صحيح هو المعكوس الحسابي للقيمة. أي أن عكس جميع بتات العدد (المكمل المنطقي) ينتج عنه نفس نتيجة طرح القيمة من صفر.

استخدمت العديد من الحواسيب القديمة، مثل UNIVAC 1101 و CDC 160 و CDC 1604 و CDC 6600 و LINC و DEC PDP-1 و UNIVAC 1107 ، وما تلاها من حواسيب، نظام حساب المتمم الأحادي. واستمرت الحواسيب التي تلت CDC 6600 في استخدام نظام حساب المتمم الأحادي حتى أواخر ثمانينيات القرن العشرين، إلى جانب الحواسيب المنحدرة من UNIVAC 1107 ( سلسلة UNIVAC 1100/2200 )، ولكن جميع الحواسيب الحديثة تستخدم نظام حساب المتمم الثنائي .

تمثيل الأرقام

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

 + − 0 0000 1111 — كل من +0 و -0 تُرجع القيمة TRUE عند اختبارها للصفر 1 0001 1110 — و FALSE عند اختبارها بحثًا عن قيمة غير صفرية. 2 0010 1101 3 0011 1100 4 0100 1011 5 0101 1010 6 0110 1001 7 0111 1000

الأساسيات

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

 ٠٠٠١ ٠١١٠ ٢٢ + 0000 0011 3 =========== ==== ٠٠٠١ ١٠٠١ ٢٥

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

 0000 0110 6 - 0001 0011 19 =========== ==== 1 1111 0011 −12 — يتم إنتاج استعارة التفافية، وتكون بتة الإشارة للنتيجة الوسيطة 1. − 0000 0001 1 — اطرح الاقتراض من النهاية من النتيجة. =========== ==== 1111 0010 −13 —النتيجة الصحيحة (6 − 19 = −13)

من السهل إثبات أن المتمم الثنائي لقيمة موجبة هو القيمة السالبة لتلك القيمة. فعملية حساب 19  +  3 تعطي نفس نتيجة  19   (−3).

أضف 3 إلى 19.

 ٠٠٠١ ٠٠١١ ١٩ + 0000 0011 3 =========== ==== ٠٠٠١ ٠١١٠ ٢٢

اطرح -3 من 19.

 ٠٠٠١ ٠٠١١ ١٩ -1111 1100 -3 =========== ==== 1 0001 0111 23 — يتم إنتاج عملية اقتراض ملتوية . − 0000 0001 1 — اطرح الاقتراض من النهاية من النتيجة. =========== ==== 0001 0110 22 —النتيجة الصحيحة (19 − (−3) = 22).

صفر سالب

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

إضافة الصفر السالب:

 ٠٠٠١ ٠١١٠ ٢٢ + 1111 1111 −0 =========== ==== 1 0001 0101 21 يتم تنفيذ حركة حمل دائرية . + 0000 0001 1 =========== ==== 0001 0110 22 النتيجة الصحيحة (22 + (−0) = 22)

طرح الصفر السالب:

 ٠٠٠١ ٠١١٠ ٢٢ - 1111 1111 -0 =========== ==== 1 0001 0111 23 يتم إنتاج عملية اقتراض ملتوية . - 0000 0001 1 =========== ==== 0001 0110 22 النتيجة الصحيحة (22 − (−0) = 22)

يمكن إنتاج الصفر السالب بسهولة في جامع المتمم الأحادي. ببساطة، اجمع العدد الموجب والعدد السالب من نفس القيمة.

 ٠٠٠١ ٠١١٠ ٢٢ + 1110 1001 −22 =========== ==== 1111 1111 −0 صفر سالب.

على الرغم من أن العمليات الحسابية تنتج دائمًا النتائج الصحيحة، إلا أن أحد الآثار الجانبية للصفر السالب هو أن البرامج يجب أن تختبر وجود الصفر السالب.

تجنب الصفر السالب

لا يُشكّل ظهور الصفر السالب مشكلةً عند استخدام عملية الطرح المُكمِّلة في الجمع. يُمرَّر المُعامل الأول إلى عملية الطرح دون تغيير، ويُكمَّل المُعامل الثاني، فتُنتج عملية الطرح النتيجة الصحيحة، متجنبةً ظهور الصفر السالب. في المثال السابق، جُمع العددان 22 و-22، فكان الناتج -0.

 ٠٠٠١ ٠١١٠ ٢٢ ٠٠٠١ ٠١١٠ ٢٢ ١١١٠ ١٠٠١ −٢٢ ١١١٠ ١٠٠١ −٢٢ + 1110 1001 −22 − 0001 0110 22 + 0001 0110 22 − 1110 1001 −22 =========== ==== لكن =========== ==== ؛ و =========== === لكن =========== === 1111 1111 −0 0000 0000 0 1111 1111 −0 0000 0000 0

تنشأ "الحالات الحدية" عندما يكون أحد المعاملات أو كلاهما صفرًا و/أو صفرًا سالبًا.

 ٠٠٠١ ٠٠١٠ ١٨ ٠٠٠١ ٠٠١٠ ١٨ − 0000 0000 0 − 1111 1111 −0 =========== ==== =========== ==== ٠٠٠١ ٠٠١٠ ١٨ ١ ٠٠٠١ ٠٠١١ ١٩ - 0000 0001 1 =========== ==== ٠٠٠١ ٠٠١٠ ١٨

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

يوضح المثال التالي ما يحدث عندما يكون كلا المعاملين موجبًا أو سالبًا للصفر:

 0000 0000 0 0000 0000 0 1111 1111 −0 1111 1111 −0 + 0000 0000 0 + 1111 1111 −0 + 0000 0000 0 + 1111 1111 −0 =========== ==== =========== ==== =========== ==== =========== ==== 0000 0000 0 1111 1111 −0 1111 1111 −0 1 1111 1110 −1 + 0000 0001 1 ================== 1111 1111 −0
 0000 0000 0 0000 0000 0 1111 1111 −0 1111 1111 −0 − 1111 1111 −0 − 0000 0000 0 − 1111 1111 −0 − 0000 0000 0 =========== ==== =========== ==== =========== ==== =========== ==== 1 0000 0001 1 0000 0000 0 0000 0000 0 1111 1111 −0 - 0000 0001 1 =========== ==== 0000 0000 0

يوضح هذا المثال أنه من بين الحالات الأربع الممكنة عند جمع ±0 فقط، سينتج الجامع -0 في ثلاث منها. أما الطرح المكمل، فسينتج -0 فقط عندما يكون المعامل الأول -0 والثاني 0.

انظر أيضاً

مراجع

  1. كنوت، دونالد إي. (1982). "4.1. أنظمة الأعداد الموضعية". فن برمجة الحاسوب، المجلد 2: الخوارزميات شبه العددية (  الطبعة الثالثة). ريدينغ، ماساتشوستس: أديسون-ويسلي. الصفحات 203-204 . ISBN  0-201-03801-3ينبغي على القراء المهتمين بالتفاصيل ومحرري النصوص ملاحظة موضع الفاصلة العليا في مصطلحات مثل "المكمل الثنائي" و"المكمل الأحادي": يتم استكمال عدد المكمل الثنائي بالنسبة لقوة واحدة من 2، بينما يتم استكمال عدد المكمل الأحادي بالنسبة لتسلسل طويل من 1.