امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
bitset
نویسنده پیام
virtuele آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #1
bitset
سلام
کسی میتونه توضیحی بده که این دستور چطوری کار میکنه؟
#define bitset(port,bit) ((port) & (1<<bit))
منظورم اینا هست ==> (port) & (1<<bit)
ممنونم
۰۸-مهر-۱۳۸۸, ۰۸:۲۴:۰۲
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #2
RE: bitset
این بیت رو تست می کنه
1<<bit
این (البته برعکسش) عدد یک رو به اندازه بیت شما شیفت می ده مثلا اگه ۲ باشه یک رو دوبار شیفت می ده تا این شکلی بشه
0b00000100 بعد با اون پرت شما and می کنه که در صورتی که بیت مربوطه یک باشه جواب غیر صفر و در صورتی که صفر باشه جواب صفره

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۸-مهر-۱۳۸۸, ۰۹:۰۰:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, Majid_Ebru, reza555
virtuele آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #3
Exclamation  RE: bitset
سلام و ممنون از جوابتون
قسمت اول جوابتون رو فهمیدم ولی قسمت دوم رو نه.
این قسمت رو میشه توضیح بیشتر بدید.
بعد با اون پرت شما and می کنه که در صورتی که بیت مربوطه یک باشه جواب غیر صفر و در صورتی که صفر باشه جواب صفره
(آخرین ویرایش در این ارسال: ۰۹-مهر-۱۳۸۸, ۱۸:۵۸:۱۳، توسط virtuele.)
۰۹-مهر-۱۳۸۸, ۱۸:۵۱:۱۸
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #4
RE: bitset
این اعداد رو ببین
0b10101010 & 0b00001000 = 0b00001000
0b11110111 & 0b00001000 = 0b00000000
در اولین حالت جواب غیر صفر چون بیت مربوطه تو عدد اول یک هست
در حالت دوم جواب صفر با اینکه همه بیت ها به جز بیت مربوطه یک هستند ولی جواب صفر
این مثال برای تست بیت شماره ۳ بود
حل شد؟

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۰-مهر-۱۳۸۸, ۱۰:۳۱:۰۴
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000, alaska
virtuele آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #5
Wink  RE: bitset
آره، این قسمت حل شد ولی یه چیز دیگه برام سواله
0b10101010 & 0b00001000 = 0b00001000
0b11110111 & 0b00001000 = 0b00000000
اینا که قرمز رنگ هستن میشن جوابی که از پرانتز بیرون میاد اما بعدش چی میشه؟(یعنی جوابمون صفر بشه یا چیزی غیر صفر ، بعد چه بلایی سر رجیستر پورت میاد که فقط همون بیت 1 میشه؟)
چون که اگه قرار باشه اینجوری( PORTB &= 1<<3) بشه با اون چیزایی که من میدونم نمیشه .
ممنونم
(آخرین ویرایش در این ارسال: ۱۱-مهر-۱۳۸۸, ۱۱:۰۱:۲۶، توسط virtuele.)
۱۱-مهر-۱۳۸۸, ۰۳:۵۴:۲۹
ارسال‌ها
پاسخ
virtuele آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #6
Sad  RE: bitset
چی شد؟
دیگه جواب نداشت؟
۱۵-مهر-۱۳۸۸, ۰۶:۵۱:۳۵
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #7
RE: bitset
گفتم این برای چک کردن بیت هست که ببینی صفر یا یک نه این که بیت رو صفر و یک کنه

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۶-مهر-۱۳۸۸, ۱۵:۰۹:۴۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : virtuele
virtuele آفلاین
تازه وارد

ارسال‌ها: 5
موضوع‌ها: 1
تاریخ عضویت: مهر ۱۳۸۸

تشکرها : 1
( 0 تشکر در 0 ارسال )
ارسال: #8
RE: bitset
مگه
#define bitset(port,bit) ((port) & (1<<bit))
یک بیت رو یک نمیکرد؟تا اینجا که ما فقط تست کریدم یک هست یا صفر
۱۷-مهر-۱۳۸۸, ۰۴:۳۴:۲۱
ارسال‌ها
پاسخ
modj.ir آفلاین
كاربر دو ستاره
**

ارسال‌ها: 233
موضوع‌ها: 0
تاریخ عضویت: شهریور ۱۳۸۸

تشکرها : 1
( 547 تشکر در 230 ارسال )
ارسال: #9
RE: bitset
اگر درست یادم باشه، بیت هایی که شماره اش رو میدین 1 میکنه. می رم باز چک می کنم

۰۸-آبان-۱۳۸۸, ۱۸:۰۰:۱۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : t3r!p3000


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS