الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

مغلق
بدأه هاني الأتاسي في 9 مايو 2002 · 9 رد · 2,862 مشاهدة · في هندسة البرمجيات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

:D :D ;)

Coding on the Cloud and for the Cloud!

My Blog

#2

السلام عليكم

لنفرض ان لدينا عددين 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 ...

أعيدوا لإسمي لونه المفضل

#3

سؤال؟

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

:( :rolleyes:

#4

طريقة جيدة الأخ 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!

My Blog

#5

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

#6

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

Coding on the Cloud and for the Cloud!

My Blog

#7

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

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

#8

:) :)

 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!

My Blog

#9

x=a-b

if a>0 then a is higher

x=0 they are equal

x<0 b is higher

#10

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

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

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

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

nael

هذا الموضوع مغلق.

مواضيع مشابهة