• 0
هاني الأتاسي

سلسلة - شغل مخك (4)

سؤال

كيف يمكن أن تبدل القيم (swap) في متحولين من نوع integer من غير استخدام مساحة تخزينية مؤقتة temp ..

:D :D ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

9 إجابة على هذا السؤال .

  • 0

السلام عليكم

لنفرض ان لدينا عددين a ,b


a=a+b
b=a-b
a=a-b

هكذا سيتم تبديل قيمة العددين .

CIONO1

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سؤال؟

من ناحية زمن التنفيذ اليس الكود الذي يستخدم المتحول المؤقت اسرع؟

:( :rolleyes:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طريقة جيدة الأخ tmaa وأيضا يوجد طريقة تستخدم مبدأ البتات عوضا عن الجمع وهي :


a = a^b ; Get the different bits
b = b^a ; b will be the original a
a = a^b ; a will be the original b

بالنسبة لزمن التنفيذ فهي نفسها في حالة استخدم المتحول temp كمسجل .. ولكن إذا كان في الذاكرة فاستخدام متحول أبطئ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا أظن انه في هذه الحالة سوف يكون temp في الذاكرة وخاصة اذا تم استخدام Optimized Compiler :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نعم كلامك صحيح أخ غياث بس المسئلة كانت تفترض عدم استخدام temp وهذا مفيد في حالة ال Embedded system بحيث تكون الذاكرة صغيرة وبعض المعالجات لا تستخدم مكدس حتى ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كيف يمكن الحصول على العدد الأكبر من بين عددين x y دون استخدام أي عبارة شرطية!

طبعاً العبارة الشرطية هي أفضل من أجل ذلك، ولكن هل لدى أحدكم فكرة :P ;) للحصول عليها من عبارة رياضية؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

:) :)


max = a + ((signed(a - B) >> 31) & (b - a));

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

وهذا كود الأسمبلي الناتج


mov ecx, DWORD PTR _a
mov eax, DWORD PTR _b
mov edx, ecx
sub edx, eax
sub eax, ecx
sar edx, 31 ; 0000001fH
and edx, eax
add edx, ecx

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

x=a-b

if a>0 then a is higher

x=0 they are equal

x<0 b is higher

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

الاخوة الكرام

اعلموني كيفية تحديث مواقع الاخبار من مقالات وتقارير واخبار يومية او اسبوعية والطريقة المثلى لهذا التحديث ..؟

وشكرا لكم على تعاونكم

nael

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .