چطور میشه توسط این عملگر اعداد زوج و فرد رو تشخیص داد؟
برای توضیح اول چند مفهوم را با هم بررسی کنیم:
- اپراتورهای Bitwise:
این اپراتورها برای اجرای عملیاتهای بیتی(منظور بیت به بیت) به کار میروند. عملیاتهای چهاگانه ریاضی به منظور پردازش سریعتر میتوانند به این شکل استفاده شوند.
با توجه به مثال، اپراتور & را بررسی میکنیم:
- & (Bitwise AND)
یک اپراتور باینری (دودویی یا همون ۱-۰) ، که به منظور عملیات AND (همون ضرب خودمون) بیتها به کار میرود. مقدار خروجی این عملیات تنها زمانی برابر ۱ یا True است که مقادیر ورودی همگی برابر ۱ باشند.(مثل ضرب که داریم: ۱=۱*۱)
معمولا مفهوم بالا را توسط یه جدول به نام جدول صحت (Truth Table) بیان میکنند:
جدول صحت
خب، حالا چطور توسط تابع زیر میتوان زوج یا فرد بودن رو تشخیص داد؟function odd($value) { return ($value & 1); }
از آنجایی که این اپراتور به منظور عملیاتهای باینری استفاده میشود، پس مقدار value$ که ما به آن یک عدد دسیمال( عدد صحیح مانند:۱ و۲ و۳ و ... ) میدهیم در این عملیات به صورت باینری در نظر گرفته میشود، به عنوان مثال عدد دسیمال ۵ برابر عدد باینری ۱۰۱ میباشد.
مسئله جدید: چجوری ۵ تو باینری میشه ۱۰۱ !؟
برای تبدیل اعداد دسیمال به باینری باید عملیات تقسیم بر ۲ را به صورت متوالی انجام داد، به عنوان مثال:
باینری به دسیمال
حالا شد ?. پس مقدار باینری value در ۱ AND (ضرب) میشه و میتوان زوج یا فرد بودن عدد را تشخیص داد. به همین راحتی
امیدوارم متوجه شده باشید