سلام دوست عزیز.
من کاری نکردم و خوشحال میشم اگه بتونم کمکی کرده باشم.
فرض کنید که شما یک متغییر از نوع int دارید که 32 بیتی هست. اگه شما مقدار این متغییر رو برابر
با 1 قرار بدید به این صورت در این 4 بایت قرار میگیره :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یا مثلا عدد دو 2 :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا اگه شما عدد 1 رو مثلا 4 بار به سمت چپ شیفت بدید دارید :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
احتمالا با ضرب منطقی آشنا هستید (&) که به این صورت عمل میکنه:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خب حالا در نظر بگیرید که شما عددی دارید مثل 2 که به صورت بالا در حافظه ذخیره شده.
برای اینکه بیت دوم رو چک کنید کافیه عدد 1 رو یکبار به سمت چپ شیفت بدید که میشه 00000010
(البته بایت اول) و با عدد 2 and کنید (& یا همون ضرب منطقی ) حاصل به این شکل در میآد :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یعنی بیت دوم TRUE هست یا مقدارش برابر یک هست.
به همین ترتیب اگه بخواید باقی بیت ها رو چک کنید کافی عدد 1 رو به اندازه مورد نظرتون شیفت بدید.
(به سمت چپ ). مثلا برای چک کردن بیت اندیس 4 ام کافی هست عدد 1 رو 4 بار شیفت بدید و با عدد مورد نظرتون & کنید و حاصل این ضرب رو بررسی کنید.
درضمن بیاد داشته باشید که شمارش از 0 شروع میشه.
باز هم اگه مشکلی بود اطلاع بدید.