السلام عليكم ورحمه الله
اريد طريقه الجمع والطرح لنطام الهكل دسميل
ولكم جزيل الشكر
السلام عليكم ورحمه الله
اريد طريقه الجمع والطرح لنطام الهكل دسميل
ولكم جزيل الشكر
نظام الجمع و الطرح بنظام hex يماثل الجمع و الطرح بنظام dec الفرق انه فى النظام hex يوجد لدينا 16 عدد قبل الوصول للرقم 10 و فى النظام dec يوجد لدينا 10 أعداد قبل الوصول للرقم 10. المعالج يراهم بصيغة ثنائية لذا بالنسبة له الأمر لا خلاف فيه:
MOV EAX, 9 ; EAX have decimal\hexadecimal value 9 ADD EAX, 1 ; EAX have decimal value of 10 or hexadecimal value of 0xA
و الله ولي التوفيق
مدونتي: C++ Tips and Tricks
مافهمت عليك
طيب عندي مثلا 8000h-0001h= 0111 1111 1111 1111
كيف طلع لنا الناتج بعمليه الطرح ؟
وهنا بعد كيف اسوي عمليه الجمع 80+80=؟؟
كل خانه فى النظام العشرى تحتوى على الأرقام من 0 و حتى 9 و عددهم 10 و لهذا سمي بالنظام العشرىن و بالمثل مع النظام السداسي عشرى حيث كل خانه تحتوى على الأرقام من 0 و 9 و أيضا الحروف a-f أو A-F و و اللذين يمثلوا الأرقام 1010- 1510 فى النظام العشرى.
لنفترض اننا نريد جمع الرقم 616 مع الرقم 916، لأنه فى النظام العشرى اكبر رقم هو 9 لذا سنقوم بإضافة 1 واحد خانة العشرات و الباقي 5 توضع فى خانة الأحاد ليصبح الناتج 1510، أما فى النظام السداسي عشرى سنقوم بإكمال العد حيث الخانه الواحدة تحتمل 16 قيمة و بالتالي:
0 1 2 3 4 5 6 7 8 9 A B C D E F
------------------9
------------6كما فى الشكل السابق القيمة 9 قمنا بإضافة 6 إليها و كانت النتيجه الحرف F16.
لنأخذ مثال أكثر تعقيدا، لنفترض اننا نريد إضافة الرقم 916 للقيمة CA16:
A + 9 = 1[3]C + 1 = DCA + 9 = D3
فى المثال السابق عند جمع الرقم A16 مع الرقم 916 تنتج لنا القيمة 1316 و لأننا نجمع خانة الاحاد فإن الرقم 316 سيظل فى مكانه و سيتم أخذ الرقم 116 لإضافته على خانة العشرات و التى تحتوى على الرقم C16 و بالجمع ينتج لنا الرقم D16 لتصبح النتيجه النهائية D316.
إذا كانت الأمثله لم تصل لك، يمكنك فهم عملية الجمع بأنها تتم كل خانه على حدى و تظل عملية الجمع مستمرة حتى يصبح لدينا رقم واحد فقط، مثلا لنجمع الرقم 916 على الرقم CA16 مرة أخرى:
C A 0 9 -- -- C 13 1 3 C 0 -- -- D 3
عملية الطرح تتم عكس عملية الجمع، و لنذكر المثال الأول حيث أردنا جمع 616 على الرقم 916 و هذا جعلنا نتحرك بدءا من الرقم 916 لليمين بمقدار 616 و هذا ما أوصلنا للرقم F16، فى عملية الطرح سنتحرك لليسار بدلا من اليمين و بالتالي عند طرح 616 من 916 ستصبح النتيجه:
0 1 2 3 4 5 6 7 8 9 A B C D E F
------------------9
6------------عندما تحركنا لليسار أصبحت النتيجه 316.
إذا كانت القيمه المطروح منها أكبر من قيمة الطرح حينها نحتاج للإقتراض من الخانه التى تلى الحالية و إنقاض قيمة تلك الخانه بواحد، مثلا لطرح الرقم F16 من الرقم 1316 كالتالي:
0 1 2 3 4 5 6 7 8 9 A B C D E F [|] 0 1 2 3 4 5 6 7 8 9 A B C D E F
------------------------------------------13
F----------------------------------النتيجه كانت 4، لاحظ انه تم زيادة الأعداد بمثلهم و ذلك لأن إقتراضنا من خانة العشرات تعنى الأعداد من 016 و حتى F16 لخانة الاحاد و بعد عملية الإقتراض تم إنقاص خانة العشرات بواحد و حيث أن قيمتها واحد فأصبحت المحصلة فى خانة العشرات صفر.
سيساعدك كثيرا إن كان لك دراية على كيفية إتمام عملية الجمع و الطرح على الورق للنظام العشرى حيث ان نفس العملية مماثلة لكل أنظمة العد الباقية.
بالنسبة للقيم التى وضعتيها ساتركها لك لتحاول حلها.
و الله ولي التوفيق
تم تعديل هذه المشاركة بواسطة C++er في 17 مارس 2014 في 22:21
مدونتي: C++ Tips and Tricks
هذا الموضوع مغلق.