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

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

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

ماهي أفضل طريقة من أجل عد الواحدات في عدد يتكون من 32 بت؟

مثلا 10 تحتوي على واحدتين لأنها تكتب 1010 ...

:) :) من غير استخدام حلقة ؟؟

Coding on the Cloud and for the Cloud!

My Blog

#2

يا سلام ....

اقدر اكتبها بالاسمبلي

عملية ازاحة و مقارنة ال carry flag، و زيادة العداد .

اتمنى ان نشوف الطريقة ... وتكون ذكية .

#3

زيادة العداد! يعني حلقة:( :(

#4

من غير استخدام حلقة :P

Coding on the Cloud and for the Cloud!

My Blog

#5

هذه هي الطريقة بس مو من عندي لذلك ماحد يسألني شرحها (light)

        x -= ((x >> 1) & 0x55555555);
        x = (((x >> 2) & 0x33333333) + (x & 0x33333333));
        x = (((x >> 4) + x) & 0x0f0f0f0f);
        x += (x >> 8);
        x += (x >> 16);
        return(x & 0x0000003f);

Coding on the Cloud and for the Cloud!

My Blog

#6

السلام عليكم

هاني بدي اسألك :P :P :P

(f)

CIONO1

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

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

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

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#7

السلام عليكم

فيه كود اخر

   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 ...

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

#8

نحن بكود واحد مو مخلصين!!!

:'( :'( :'( :'( :'( :'( :'( :'( :'(

#9

اول ما قلتوا ما فيه حلقة ...

وقف مخي !!! و بالكود هذا فجرتوا مخي ...

#10

السلام عليكم

ياجماعة في احد فاهم شو هالكود ؟

انا لم افهم على اي اساس تم ذلك .

:'( :'( :'(

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

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

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

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#11

حلو فهمت أحد هذه الكودات ... وياللي خلاني أفهمو حل لسؤال عكس الواحدات ..

سوف أشرح هذا الكود :

   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!

My Blog

#12

استخدام ARRAY

الناس انواع

رجل يعلم ويعلم انه يعلم فهذا عالم فوقروه

رجل يعلم ولا يعلم انه يعلم فهذا غافل فإيقزوه

رجل لا يعلم ويعلم انه لا يعلم فهذا جاهل فعلموه

رجل لا يعلم ولا يعلم انه يعلم فهذا احمق فابتعدو عنه

#13

***

كل الشكر لك

***

#14

مرحبا ........ :)

يا الله الموضوع هذا طلع من وين :rolleyes:

هذا من أيام الأخ هاني الأتاسي ذكره الله بالخير ..

بالمناسبة في أحد يعرف أين ذهب الأعضاء القدامى ؟؟؟؟

تحياتي

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

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