NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 4197 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 14 از 14

موضوع: محاسبات بیتی ساده !

  1. #1
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض محاسبات بیتی ساده !

    سلام به همه دوستان گرامی
    چند روزی هست که درگیری مباحث بیتی شدم و البته دارم به بهترین روش و البته اپتیمایز ترین روش عمل میکنم چرا که تعداد سیکل ماشین صرف شده مهم هست و باید سیستم بالاترین سرعت رو داشته باشه
    طرح مساله
    یک آرایه 256 درایه ای از نوع متغییر لانگ داریم به این صورت
    کد:
    long a[256];
    که این متغییر جایی جایی پر میشه و مساله از این به بعد شروع میشه
    حالا میخوام تعداد بیت های 1 این آرایه رو به دست بیارم که این ارایه ما 1024 بیت داره
    حالا بهترین روش برای بدست آوردن تعداد یک ها چی هست

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  3. #2
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    کسی نیست که بخواد چیزی بگه و نظری داشته باشه

  4. #3
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    هر عنصر شما 4 بایت یعنی 32 بیت هست و 257 عنصر شما 1028 بایت هست نه بیت!

    میتونی با استفاده از یه ارایه دیگه ایندکس عنصرهایی که یک شدن رو بدست بیاری...

  5. #4
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    من هم خواستم حرف بهنام رو بنویسم که ایشون نوشتند.
    پس الان یک کم روی سوال مبهم شد! تعداد بیت هایی که در کل عناصر این آرایه یک هستن رو می خوای ببینی چیه یا تعداد عناصر این آرایه که مقدارشون یک هستن؟

    لطفا اون روش اولیه که به ذهن خودتون هم رسیده بذارید شاید همون رو بشه بهتر پرورش داد تا از اول یه ایده جدید داد.
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  6. #5
    کاربر فعال M_GH آواتار ها
    تاریخ عضویت
    Mar 2012
    نام
    م. غیور
    نوشته ها
    314
    تشکر
    464
    تشکر شده 367 بار در 177 پست

    پیش فرض

    من که فکر نمیکنم روش خاصی داشته باشه !

    اینم نظر من برا 1 بایت :
    [PHP]
    for (int i=0;i<32;i++){
    Nbit+=Byte%2;
    byte=byte/2;
    }
    [/PHP]

  7. #6
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    هر عنصر شما 4 بایت یعنی 32 بیت هست و 257 عنصر شما 1028 بایت هست نه بیت!

    میتونی با استفاده از یه ارایه دیگه ایندکس عنصرهایی که یک شدن رو بدست بیاری...
    حق با شماست ولی کلیت ماجرا هیچ فرقی نمیکنه حالا با این حساب 8 کیلو بیت داریم که میخوایم ببینیم چند تا از این بیت ها یک هست؟

    و در مورد نظر آقای M_GH هم باید بگم که روششون کار میکنه ولی به درد ما نمیخوره این روش خیلی کند هست انجام محاسبه تقسیم و باقی مانده
    روش سریعتر

  8. تشکرها از این نوشته :


  9. #7
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    متغیر شما حتمن باید 256 عنصری باشه؟

    و اینکه گفتی جای جایی پر میشه یعنی به ترتیب ایندکس پر نمیشه درسته؟

  10. #8
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    میتونید تغییر بدید اندازه رو
    در مورد ایندکس هم باید بگم که نه به ترتیب ایندکس پر نمی شه

  11. #9
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    نقل قول نوشته اصلی توسط agape نمایش پست ها
    و در مورد نظر آقای M_GH هم باید بگم که روششون کار میکنه ولی به درد ما نمیخوره این روش خیلی کند هست انجام محاسبه تقسیم و باقی مانده
    روش سریعتر
    روش and بیتی با عدد یک که هی شیفت داده میشه چطور؟

    فکر کنم دنبال راه حلی هستید که روی تک تک بیت ها یک بار پردازش مجزا نکنیم. درسته؟
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

  12. #10
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    خب چرا اون لحظه ای که تو ارایه میخوای بنویسی، بیتهای مقدار جدید رو نمیشماری؟

    اینطوری نیازی نیست که مثلن توی یه حلقه یا هرچیزی بخوای کل بیتهای ارایه رو بشماری!

  13. #11
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    اون کار رو نمیشه کرد که موقه نوشتن بیت ها رو چک کنیم چرا که سرعت خیلی مهم هست
    بله حق با آقای ، آقایی فر هست نمیخوام برای هر بیت شرطی قائل باشم
    البته به راهکار رسیدم و الان بیشتر جنبه هوش آزمایی داره

  14. #12
    کاربر علاقه مند Shapour_Ardebil آواتار ها
    تاریخ عضویت
    Jun 2007
    نام
    ٍShapour
    نوشته ها
    98
    تشکر
    49
    تشکر شده 104 بار در 49 پست

    پیش فرض

    با سلام

    امکان دارد هیچ یک از بیتهای مثلا عنصر ارایه شماره 1 اصلا یک نباشد پس چک کردن بیتهای آن وقت تلف کردن است پس اول کل بیتها را چک میکنیم
    کد:
    if(arr[1]>0)
    اگر بزگتر از صفر بود میتوانیم 16 بیت پایین ویا بالا
    کد:
    int aa=0xffff & arr[1]
    و
    کد:
    if(aa>0)
    و حتی 8 بیت بالا و پایین به این ترتیب با کوچک کردن منطقه جستجو زمان را خیلی کوچک میکنیم

  15. #13
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    خوب میبینم که دوستان دارن هی به جواب نزدیک تر میشن !
    آقای Shapour_Ardebil راه کار خوبی هست ولی کافی نیست - من در ابتدا از این روش استفاده کرده بودم ولی باز سرعت کافی نداره !
    راه حلی که من پیاده کردم تعداد 90112 بیت رو با فرایند خوندن از SPI و چک کردن بیت های اون الان 90 میلی ثانیه طول میکشه با سرعت 40 مگا هرتزی که 80 میلی ثانیه صرف خوندن از SPI میشه
    منتظر راهکار بهتر شما هستم

  16. #14
    مدیر انجمن Aghaeifar آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    علی آقائی فر
    نوشته ها
    751
    تشکر
    552
    تشکر شده 975 بار در 440 پست

    پیش فرض

    آقای مزارعی راه حلت رو رو کن دیگه!

    احتمالا دنبال همچین چیزی هستی. تست هم کردمش خودم:

    [PHP]
    int NumberOfSetBits(int i)
    {
    i = i - ((i >> 1) & 0x55555555);
    i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
    return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
    }

    [/PHP]

    تعدادی از الگوریتم های این کار در لینک زیر از دانشگاه استنفورد موجوده

    http://graphics.stanford.edu/~seande...ntBitsSetNaive
    ما در انتظار رویت خورشیدیم ...

    اللهم عجل لولیک الفرج

موضوعات مشابه

  1. دانلود psim 9 نسخه‌ی 64 بیتی و 32 بیتی با کرک
    توسط bato_990 در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 26
    آخرين نوشته: 24-01-2014, 17:52
  2. lcd n96 مد 8بیتی
    توسط saeedmo در انجمن PIC
    پاسخ: 2
    آخرين نوشته: 18-09-2012, 01:13
  3. حافظه فلش یک ترابایتی با قیمت 3 هزار دلار
    توسط hakimzadeh در انجمن اخبار کامپیوتر و IT و مسابقات رباتیک
    پاسخ: 1
    آخرين نوشته: 13-01-2012, 00:58
  4. شمارنده 5 بیتی با ff-t
    توسط esiiranmicro در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 0
    آخرين نوشته: 14-06-2011, 20:30
  5. ارسال تک بیتی
    توسط abbas1371sa در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 03-03-2011, 01:33

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •