الفريق العربي للهندسة العكسية
1.4.15 الطرح الثنائي - Binary Subtraction - نسخة قابلة للطباعة

+- الفريق العربي للهندسة العكسية (https://www.at4re.net/f)
+-- قسم : منتديات البرمجة - Programming Forums (https://www.at4re.net/f/forum-5.html)
+--- قسم : البرمجة بالأسمبلي - Assembly Section (https://www.at4re.net/f/forum-16.html)
+--- الموضوع : 1.4.15 الطرح الثنائي - Binary Subtraction (/thread-3975.html)



1.4.15 الطرح الثنائي - Binary Subtraction - R333T - 15-05-2024

[صورة مرفقة: dark.jpg]
 رحلة في عالم الأسمبلي   dance
 
https://www.youtube.com/playlist?list=PL..._swadKSPga

# الفصل 0 : تمهيد # الفصل 1 : المفاهيم الأساسية في لغة الassembly
 



طرح الأرقام الثنائية الصغيرة غير الموقّعة من الأرقام الكبيرة من السهل إذا تبعت نفس الطريقة التي تتبعها في طرح الأعداد العشرية. إليك مثال:

  0 1 1 0 1   (decimal 13)
- 0 0 1 1 1   (decimal 7)
-----------



طرح البتات في الموضع 0 مباشرة:

  0 1 1 0 1
- 0 0 1 1 1
-----------
          0
          


في الموضع التالي (1 - 0)، يجب علينا استعارة 1 من الموضع التالي إلى اليسار. إليك نتيجة طرح 1 من 2:

  0 1 0 0 1
- 0 0 1 1 1
-----------
        1 0
        


في الموضع التالي، يجب علينا مجدداً استعارة بت من العمود الذي يساره وطرح 1 من 2:

  0 0 0 1 1
- 0 0 1 1 1
-----------
      1 1 0
      


وأخيرًا، البتان الأكثر أهمية هما صفران ناقص صفران:


  0 0 0 1 1
- 0 0 1 1 1
-----------
  0 0 1 1 0   (decimal 6)



طريقة أبسط للتعامل مع الطرح الثنائي هي عكس علامة القيمة التي يتم طرحها، ثم إضافة القيمتين. تتطلب هذه الطريقة أن يكون لديك بت فارغ إضافي لاحتواء علامة العدد. لنجربها مع نفس المشكلة التي قمنا بحسابها للتو: (01101 ناقص 00111). أولاً، نقلب عدد 00111 بعكس بتاته (11000) ونضيف 1، لنحصل على 11001. بعد ذلك، نقوم بجمع القيم الثنائية ونتجاهل حمل البت الأعلى:


0 1 1 0 1   (+13)
1 1 0 0 1   (-7)
---------
0 0 1 1 0   (+6)



النتيجة هي بالضبط ما توقعناه.


 good