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

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

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

كيف تعكس ترتيب البتات في رقم 32 بت ...

يعني --- لو كان الرقم 1110001101

راح يصير 1011000111

؟

#2

السلام عليكم

int reverse(int n)
{
   n = ((n >>  1) & 0x55555555) | ((n <<  1) & 0xaaaaaaaa) ;
   n = ((n >>  2) & 0x33333333) | ((n <<  2) & 0xcccccccc) ;
   n = ((n >>  4) & 0x0f0f0f0f) | ((n <<  4) & 0xf0f0f0f0) ;
   n = ((n >>  8) & 0x00ff00ff) | ((n <<  8) & 0xff00ff00) ;
   n = ((n >> 16) & 0x0000ffff) | ((n << 16) & 0xffff0000) ;
return(n);
}

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#3

:confused: :confused:

طيب tmaaa أطلب شرح الكود من بعد اذنك ... ؟؟؟

Coding on the Cloud and for the Cloud!

My Blog

#4

السلام عليكم

اشرح لي الكود الموجود في السؤال الثاني من السلسله وانا اشرح هذا الكود :P :P :P

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#5

طيب أنا ذكرت أنو هذاك الكود مو من عندي لذلك ماشرط اشرحو أنا بس أنت ماذكرت شي لذلك يجب عليك أن تشرحه :mad: :mad:

:P :P

Coding on the Cloud and for the Cloud!

My Blog

#6

السلام عليكم

الكود اكيد 99% لست انا من كتبه :confused: :confused:

هو مشابه للكود في السؤال الثاني ..

عليك بشرح الكود الموجود في السؤال الثاني :P :P :P :P :P

1 : 0 خسرت يا هاني :D .

ان وجدت اي معلومات عن الاكواد السابقة ارجو اعلامي , وان وجدت انا ان شاء الله ساكتبها هنا .

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#7

السلام عليكم

هناك كود اخر . من سيشرحه ؟ :P

ملحوظة هامــــــــــــــــــــــــــــــــــــــــــه : لست من كتب الكود

// returns bit reverse of (x as n bits)
unsigned long
rev (unsigned long x, unsigned int n)
{
// this would better with a #if etc 
  if (sizeof (unsigned long) * 8 == 32)
    {
      x = ((x >> 16) | (x << 16));
      x = (((x >> 8) & 0x00FF00FF) | ((x << 8) & 0xFF00FF00));	// on x86 could use asm BSWAP (ie change endian form)
      x = (((x >> 4) & 0x0F0F0F0F) | ((x << 4) & 0xF0F0F0F0));
      x = (((x >> 2) & 0x33333333) | ((x << 2) & 0xCCCCCCCC));
      x = (((x >> 1) & 0x55555555) | ((x << 1) & 0xAAAAAAAA));	// can reverse the lines above , may be possible to do in any order
      x >>= (32 - n);
    }
  else if (sizeof (unsigned long) * 8 == 64)
    {
      x = ((x >> 32) | (x << 32));
      x = (((x >> 16) & 0x0000FFFF0000FFFF) | ((x << 16) & 0xFFFF0000FFFF0000));	// probably asm for this ?
      x = (((x >> 8) & 0x00FF00FF00FF00FF) | ((x << 8) & 0xFF00FF00FF00FF00));	// change endian form ?
      x = (((x >> 4) & 0x0F0F0F0F0F0F0F0F) | ((x << 4) & 0xF0F0F0F0F0F0F0F0));
      x = (((x >> 2) & 0x3333333333333333) | ((x << 2) & 0xCCCCCCCCCCCCCCCC));
      x = (((x >> 1) & 0x5555555555555555) | ((x << 1) & 0xAAAAAAAAAAAAAAAA));
      x >>= (64 - n);
    }
  return x;
}

(f)

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#8

:eek: :eek: :eek: :confused: :confused:

Coding on the Cloud and for the Cloud!

My Blog

#9

طيب السؤال هذا كان كل شخص يقدر يجاوب عليه لو فتح عينه كويس على السؤال و شاف اني ما قلت فيه ( ممنوع استخدام الحلقة )، ليش ما فيه احد استخدم حلقة ؟؟؟؟

#10

:D :D :D

هي ياشباب .. حاولت أحل هذه المسألة وتوصلت إلى نتيجة مشابهة لأحد الاجابات السابقة .. بس طلعت هي سهلة ..::

اجابتي هي :

 
void bitreverse(int &a) 
{ 
a = a >> 16 | a << 16; 
a = (a & 0xff00ff00) >> 8 | (a & 0x00ff00ff) << 8; 
a = (a & 0xf0f0f0f0) >> 4 | (a & 0x0f0f0f0f) << 4; 
a = (a & 0xcccccccc) >> 2 | (a & 0x33333333) << 2; 
a = (a & 0xaaaaaaaa) >> 1 | (a & 0x55555555) << 1; 
}

الفكرة جدا بسيطة وهي التالية :

من أجل قلب بتات عدد من 32 بت مثلا هي عبارة عن قلب أول 16 بت مع ثاني 16 بت ومن ثم كل 16 بت يتم فلبها كالتالي : قلب 8 بت ب 8 بت و ال 8 يتم قلبهم 4 ب 4 و الأربعة يتم قلبها 2 ب 2 و أخيرا يتم قلب البتين .. في النهاية سوف نحصل على العدد المقلوب ..

ممكن للطريقة السابقة أن تتم بصورة عكسية أيضا ..

والكود السابق تماما يمثل الكلام الذي ذكرته .. حيث السطر الأول يقوم بقلب ال 16 بت و التاني يقوم من أجل كل 16 بت بقلب ال 8 بت وهكذا حتى السطر الاخير الذي يقوم بقلب كل بتين متجورين ..

:)

Coding on the Cloud and for the Cloud!

My Blog

#11

السلام عليكم

مشكور اخ هاني (f) (f) (f)

2:1 لصالحك . :'( :'(

:D

CIONO1

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

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

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