|
اسف ربما لم اتمكن من ايصال ما اقصد
نعم أخي ماجد كلامك صحيح تماما لكن انا لم اقصد هذا
يمكن ان اقرب لك الفكرة بالتمثيل الاتي
البيانات التالية كل منها بايت واحد وهي ايضا جميع الاحتمالات التي يكون فيها سبع واحدات بالتمثيل الثنائي
والان كما ترى أخي العزيز هي بالتسلسل من الصغير الى الكبير فمثلا ان ورد الرقم 223 اريد الحصول على الرقم 3 وهو تسلسل هذا الرقم في هذه الاحتمالات او 253 يعيد الرقم 7
التسلسل القيمة التمثيل الثنائي
1 127 01111111
2 191 10111111
3 223 11011111
4 239 11101111
5 247 11110111
6 251 11111011
7 253 11111101
8 254 11111110
هذا كان قصدي أخي العزيز
وهنا هل يمكن حساب التسلسل بعملية حسابية أم يجب احضار جميع الاحتمالات ( اعداد جدول مثلا او استخدام حلقات للحصول على الاحتمالات )ثم حساب تسلسلها
ولك فائق الاحترام والتقدير
|
أخى العزيز
لو هذه هى المشكلة فيمكنك فى 8 خطوات حساب القيمة
أدر الرقم لليسار
الأمر الفعلى بحسب اللغة فعادة ما يكون لديك إزاحة لليسار أو اليمين و إدارة لليسار أو اليمين
لو بدأنا مثلا بأى رقم وليكن الرقم
4 239 11101111
الإزاحة لليسار ستجعله 11011110
ثم مرة أخرى تجعله 10111100
أى يدخل دوما صفر و Carry لا يتأثر
بينما لو أدرناه لليسار فهناك نوعين من النتائج بحسب اللغة
أحدهما
1101111 و ما كان فى Carry سيصبح فى B0 (أقصى اليمين ) و ما كان فى B7 سيذهب فى Carry لذا كان يجب تصفير Carry أولا
و الطريقة الأخرى
البت 7 ستنسخ فى Carry و أيضا فى B0 أى سيكون بعد مرة
11011111 و Carry =1
ثم مرة أخرى
10111111 و Carry =1
ثم مرة أخرى
01111111 و Carry =1
ثم مرة أخرى
11111110 و Carry =0
فكل ما عليك هو إنشاء دورة من 8 مع عداد يبدأ بصفر
أدر الرقم مرة و زد العداد 1 ثم أقفز خارجها لو Carry=0
العداد عند الخروج سيحتوى الرقم ألذى يعبر عن مكان البت