كيف تعكس ترتيب البتات في رقم 32 بت ...
يعني --- لو كان الرقم 1110001101
راح يصير 1011000111
؟
كيف تعكس ترتيب البتات في رقم 32 بت ...
يعني --- لو كان الرقم 1110001101
راح يصير 1011000111
؟
السلام عليكم
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 ...
أعيدوا لإسمي لونه المفضل
السلام عليكم
اشرح لي الكود الموجود في السؤال الثاني من السلسله وانا اشرح هذا الكود :P :P :P
(f)
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
السلام عليكم
الكود اكيد 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 ...
أعيدوا لإسمي لونه المفضل
السلام عليكم
هناك كود اخر . من سيشرحه ؟ :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 ...
أعيدوا لإسمي لونه المفضل
طيب السؤال هذا كان كل شخص يقدر يجاوب عليه لو فتح عينه كويس على السؤال و شاف اني ما قلت فيه ( ممنوع استخدام الحلقة )، ليش ما فيه احد استخدم حلقة ؟؟؟؟
: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!
السلام عليكم
مشكور اخ هاني (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 ...
أعيدوا لإسمي لونه المفضل
هذا الموضوع مغلق.