سؤال

أشاهد بعض المحاضرات الكبرى من ديفيد مالان (هنا) هذا يجري ثنائي. تحدث عن تمثيلات تكملة موقعة / غير موقعة و 1 كان هناك إضافة من 4 + (-3) والتي اصطف مثل هذا:

0100
1101 (flip 0011 to 1100, then add "1" to the end)
----
0001

لكنه ولوح يديه السحرية وألقي الحمل الأخير. فعلت بعض البتات البديل في ويكيبيديا لم أحصل عليه تماما، هل يمكن لشخص ما أن يفسر لي لماذا تم إسقاط هذا الاحتفاظ بالذات (في أعمدة 8> في 16)، لكنه أبقى واحد فقط قبل ذلك؟

شكرا!

هل كانت مفيدة؟

المحلول

تم إسقاط آخر حمل لأنه لا يصلح في الفضاء المستهدف. سيكون القليل الخامس.

إذا كان قد نفذ نفس الإضافة، ولكن مع تخزين 8 بت 8 بت، فسيظهر مثل هذا:

00000100
11111101
--------
00000001

في هذه الحالة، سنعشق أيضا بمحمل "غير مستخدم".

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


تخزن معالجات X86 حقيبة إضافية في علامة تحمل (CF)، والتي من الممكن الاختبار مع بعض التعليمات.

نصائح أخرى

تحمل ليست هي نفسها

في المثال، لديك تنفيذ من MSB. بحكم التعريف، تنتهي هذه الحمل على الأرض. (إذا كان هناك مكان لذلك للذهاب، فلن يكون ذلك خارج MSB.)

ولكن إضافة رقمين مع علامات مختلفة لا يمكن أن تفيض. يمكن أن يحدث الفائض فقط عندما تنتج رقمين بنفس العلامة نتيجة علامة مختلفة.

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

 ...000100
+...111101
----------
....000001

في مرحلة ما، عليك تعيين عدد البتات لتمثيل الأرقام. اختار 4 بت. أي حمل إلى القليل 5 مفقود. ولكن هذا جيد لأنه قرر أن يمثل الرقم في 4 بت فقط.

إذا قرر استخدام 5 بت لتمثيل الأرقام التي كان سيحصل عليها بنفس النتيجة.

هذا هو جمالها ... ستكون النتيجة بنفس حجم الشروط التي تضيفها. لذلك يتم إلقاء البت الخامس

في 2 تكمل استخدام BIT Care للإشارة إذا كان هناك تجاوز في العملية الأخيرة.

يجب أن ننظر إلى الاخير اثنين من البتات حمل لمعرفة ما إذا كان هناك تجاوز. في مثالك، آخر اثنين من البتات المحمصة كانت 11 وهذا يعني أنه لم يكن هناك تجاوز.

إذا كانت البتات الحلي الأخيرة 11 أو 00 ثم لم يحدث أي فائدة. إذا كانت البتات الحلي الأخيرة 10 أو 01 ثم كان هناك تجاوز. هذا هو السبب في أنه يهتم في بعض الأحيان بت تحمله وأوقات أخرى تجاهله.

الصف الأول أدناه هو صف الحمل. يتم استخدام معظم البتات اليسرى في هذا الصف لتحديد ما إذا كان هناك تجاوز.

1100
 0100
 1101
 ----
 0001

يبدو أنك تستخدم 4 بت فقط، لذلك لا يوجد عمود 16.

إذا كنت تستخدم أكثر من 4 بت ثم يمثل تمثيل -3 مختلفا، فسيظل حمل الرياضيات في النهاية. على سبيل المثال، مع 6 بتات لديك:

 000100
 111101
 ------
1000001

وبما أن الحمل خارج نطاق البت من تمثيلك، فقد ولتكون لديك فقط 000001

النظر في 25 + 15:

5 + 5 = 10، نحافظ على 0 ودع 1 انتقل إلى عمود العشرات. ثم 2 + 1 (+ 1) = 4. وبالتالي النتيجة 40 :)

إنه نفس الشيء مع الثنائيات. 0 + 1 = 1، 0 + 0 = 0، 1 + 1 = 10 => أرسل 1 العمود 8، 0 + 1 (+ 1) = 10 => أرسل 1 إلى العمود التالي - إليك الفائض لماذا نرمي فقط 1 بعيدا.

هذا هو السبب في استكمال 2 رائع جدا. يسمح لك بإضافة / اختراق فقط مثلك مع BEASE-10، لأنك (AB) استخدم حقيقة أن علامة البتة هي MSB، والتي سوف تتكلم العمليات طوال الطريق للفيضافات، عند nessecary.

آمل أنني جعلت نفسي مفهومة. من الصعب جدا أن تستسبر هذا عندما لا تكون اللغة الإنجليزية اللغة الأصلية :)

عند أداء الإضافة المكتملة 2، والوقت الوحيد الذي يشير فيه الحمل إلى وجود مشكلة هو عندما يكون هناك حالة مفرطة - لا يمكن أن يحدث ذلك إذا كان لدى المعاملتين علامة مختلفة.

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

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

طريقة واحدة بسيطة للتفكير في الأمر هو "علامة لا تتغير". إذا كان الحمل في MSB يختلف عن التنفيذ، فقد تم تغيير الإشارة بشكل غير صحيح.

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

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

الآن، بالنظر إلى أنه، يمكننا أن نرى من الرياضيات اليومية التي 4 + (-3) = 1, ، وهذا هو بالضبط ما حصلت عليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top