ماهي أفضل طريقة من أجل عد الواحدات في عدد يتكون من 32 بت؟
مثلا 10 تحتوي على واحدتين لأنها تكتب 1010 ...
:) :) من غير استخدام حلقة ؟؟
يا سلام ....
اقدر اكتبها بالاسمبلي
عملية ازاحة و مقارنة ال carry flag، و زيادة العداد .
اتمنى ان نشوف الطريقة ... وتكون ذكية .
زيادة العداد! يعني حلقة:( :(
السلام عليكم
هاني بدي اسألك :P :P :P
(f)
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
السلام عليكم
فيه كود اخر
x = (x & 0x55555555) + ((x & 0xaaaaaaaa) >> 1); x = (x & 0x33333333) + ((x & 0xcccccccc) >> 2); x = (x & 0x0f0f0f0f) + ((x & 0xf0f0f0f0) >> 4); x = (x & 0x00ff00ff) + ((x & 0xff00ff00) >> 8); x = (x & 0x0000ffff) + ((x & 0xffff0000) >> 16); return(x);
او
x = (0x55555555 & x) + (0x55555555 & (x>> 1)); x = (0x33333333 & x) + (0x33333333 & (x>> 2)); x = (0x0f0f0f0f & x) + (0x0f0f0f0f & (x>> 4)); x = (0x00ff00ff & x) + (0x00ff00ff & (x>> 8)); x = (0x0000ffff & x) + (0x0000ffff & (x>>16)); return x;
CIONO1
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
نحن بكود واحد مو مخلصين!!!
:'( :'( :'( :'( :'( :'( :'( :'( :'(
اول ما قلتوا ما فيه حلقة ...
وقف مخي !!! و بالكود هذا فجرتوا مخي ...
السلام عليكم
ياجماعة في احد فاهم شو هالكود ؟
انا لم افهم على اي اساس تم ذلك .
:'( :'( :'(
هناك حتى الأحلام أصبحت ممنوعة ...
إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!
ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...
There, even in dreams u r wanted
To be a programmer, how a nice dream it was
Leaving ...
أعيدوا لإسمي لونه المفضل
حلو فهمت أحد هذه الكودات ... وياللي خلاني أفهمو حل لسؤال عكس الواحدات ..
سوف أشرح هذا الكود :
x = (x & 0x55555555) + ((x & 0xaaaaaaaa) >> 1); x = (x & 0x33333333) + ((x & 0xcccccccc) >> 2); x = (x & 0x0f0f0f0f) + ((x & 0xf0f0f0f0) >> 4); x = (x & 0x00ff00ff) + ((x & 0xff00ff00) >> 8); x = (x & 0x0000ffff) + ((x & 0xffff0000) >> 16); return(x);
ببساطة عملية العد هنا تبدأ بالتدريج ..
أول سطر يقوم ب عد كل بتين متجاورين .. على فرض عدد 8 بتات :
a = 10101101 then 10101101 01010101 & -------------- 00000101 = x 10101101 10101010 & -------------- 10101000 = y then x + y >> 1 means 00000101 01010100 -------------- 01011001 == 0x1121
بعد تنفيذ أول سطر نحصل على عدد يحتوي في كل بتين على القيمة 0 أو 1 أو 2 وهي تمثل عدد الواحدات في هاتين البتين ..
الأسطر التي بعدها مشابهة .. مثلا السطر التاني يقوم بجمع القيم على اعتبار أخذ بلوكات حجمها 2
السطر التالي بلوكات حجمها 4 ومن ثم 8 ومن ثم 16 ... :)
أما الكود الأول الذي ذكرته هنا فهو مشابه ولكنه مكتوب بطريق أخرى أفضل
Coding on the Cloud and for the Cloud!
استخدام ARRAY
الناس انواع
رجل يعلم ويعلم انه يعلم فهذا عالم فوقروه
رجل يعلم ولا يعلم انه يعلم فهذا غافل فإيقزوه
رجل لا يعلم ويعلم انه لا يعلم فهذا جاهل فعلموه
رجل لا يعلم ولا يعلم انه يعلم فهذا احمق فابتعدو عنه
***
كل الشكر لك
***
مرحبا ........ :)
يا الله الموضوع هذا طلع من وين :rolleyes:
هذا من أيام الأخ هاني الأتاسي ذكره الله بالخير ..
بالمناسبة في أحد يعرف أين ذهب الأعضاء القدامى ؟؟؟؟
تحياتي
هذا الموضوع مغلق.