كيف يمكن أن تبدل القيم (swap) في متحولين من نوع integer من غير استخدام مساحة تخزينية مؤقتة temp ..
:D :D ;)
السلام عليكم
لنفرض ان لدينا عددين a ,b
a=a+b b=a-b a=a-b
هكذا سيتم تبديل قيمة العددين .
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
سؤال؟
من ناحية زمن التنفيذ اليس الكود الذي يستخدم المتحول المؤقت اسرع؟
:( :rolleyes:
طريقة جيدة الأخ 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 كمسجل .. ولكن إذا كان في الذاكرة فاستخدام متحول أبطئ
Coding on the Cloud and for the Cloud!
لا أظن انه في هذه الحالة سوف يكون temp في الذاكرة وخاصة اذا تم استخدام Optimized Compiler :)
كيف يمكن الحصول على العدد الأكبر من بين عددين x y دون استخدام أي عبارة شرطية!
طبعاً العبارة الشرطية هي أفضل من أجل ذلك، ولكن هل لدى أحدكم فكرة :P ;) للحصول عليها من عبارة رياضية؟
:) :)
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
Coding on the Cloud and for the Cloud!
x=a-b
if a>0 then a is higher
x=0 they are equal
x<0 b is higher
السلام عليكم ورحمة الله وبركاته
الاخوة الكرام
اعلموني كيفية تحديث مواقع الاخبار من مقالات وتقارير واخبار يومية او اسبوعية والطريقة المثلى لهذا التحديث ..؟
وشكرا لكم على تعاونكم
nael
هذا الموضوع مغلق.