تبلیغات
برنامه نویسی و الکترونیک - آشنایی با عملگرهای بیتی ( Bitwise Operators )
 
منوی اصلی


--------------------------

--------------------------

--------------------------

--------------------------


سفارش پروژه

E-Mail :
Mahmood_Mehri@Hotmail.com

سایت برنامه نویس :  Mahmood_M


موضوعات

دانلود نرم افزار
 
تخصصی برنامه نویسی
  تخصصی برق ( الکترونیک )
  کامپوننت ها و ابزارها
  نرم افزارهای متفرقه
برنامه نویسی
  مباحث عمومی
  آموزش Delphi

  آموزش زبان C++ / C
 
آموزش Matlab

  آموزش زبان Assembly
  آموزش DataBase

الکترونیک
  مباحث عمومی
  مباحث عمومی الکترونیک
  معرفی قطعات الکترونیکی
  کار با مولتی متر
  مدارات الکترونیک
  میکروکنترلر
  میکروکنترلرهای AVR
  پروژه ها
مباحث متفرقه
  آموزشهای متفرقه
  معرفی سایت
  معرفی کتاب
  پاسخ به سئوالات
  مطالب عمومی


لینك دوستان
:: جک :: اس ام اس :: عکس
:: الکترونیک 89 گیلان
:: سورسهای نرم افزاری
:: اینترنت بدون تحریم
:: علمی.کتاب.مجله.نرم افزار.مقاله
:: مبارزات آزاد
:: برنامه نویسی از اهل زمین
:: :: جزیره ی دانلود ::
:: :: کامپیوتر و IT ::
:: بزرگترین پایگاه مدل لباس اینترنتی
:: مرکز دانلود ایرانیان
:: پایگاه علمی مهندسی تراشه
:: تمامی راهکارهای کامپیوتری
:: برنامه نویسی و طراحی وب
:: خرید ساعت دیواری
:: :: فناوری روز ::
:: :: همه چیز واسه موبایل ::
:: آموزش تخصصی کامپیوتر
:: * پیاز داغ اینترنت ! *
:: جدیدترین موزیکها و نرم افزارها
:: دانلود سورس ویژوال بیسیک
:: امپراطور دانلود و آموزش
:: موبایل و کامپیوتر
:: جدیدترین آهنگهای هفته
:: درباره ی دلفی !
:: برنامه نویس
:: پروژه های رایگان و آموزش ++C
:: ابراهیم آنلاین

 : " آشنایی با عملگرهای بیتی ( Bitwise Operators ) " :
 
سلام ...

در برنامه نویسی و الکترونیک ( مخصوصا در هنگام کار با میکرو کنترلر ها ) همواره با اعداد مبنای 2 ( Binary ) و مبنای 16 ( Hexadecimal ) سر و کار داریم ، تسلط روی این اعداد و شناخت عملگرهایی که روی این اعداد تاثیرگذار هستن یکی از ملزمات محسوب میشه !

توی این پست در مورد عملگرهای بیتی ( Bitwise Operators ) بحث می کنیم و چند مثال در زبانهای C و Delphi رو با هم مرور خواهیم کرد ...

عملگرهای بیتی پر کاربرد 6 تا هستن :
  • AND
  • NOT
  • OR
  • XOR
  • SHL
  • SHR
قبل از ادامه ی کار این نکته رو بگم که هر عدد مبنای دو رو معمولا با 8 رقم به عنوان یک بایت نشون می دیم و هر رقم اون رو یک بیت در نظر می گیریم .

عملگر AND
:

عملگر AND به این صورت عمل میکنه که اگر بیتهای متناظر در دو عدد باینری هر دو مقدار 1 داشتند ، بیت متناظر در عدد باینری حاصل هم مقدار 1 می گیره ، به عنوان مثال ، فرض کنیم ، قصد داریم دو عدد باینری " 10011010 " و " 00110110 " رو با هم AND کنیم ! ، حاصل به صورت زیر خواهد بود :

10011010
00110110
=
00010010

به نحوه ی محاسبه دقت کنید ، بیتهای شماره ی 2 و 5 عدد نهایی مقدار 1 گرفتن ، چون بیتهای متناظر اونها در اعدادی که با هم AND شدن ، هر دو مقدار 1 داشتن ولی سایر بیتها این ویژگی رو نداشتن و بیت نظیرشون در عدد نهایی مقدار صفر گرفت .


عملگر OR :

عملگر OR به این صورت عمل میکنه که اگر یکی از بیتهای متناظر در دو عددی که با هم OR می شن ، مقدار 1 بگیره ، بیت نظیر اونها توی عدد حاصل هم مقدار یک می گیره ، مثال :

10011010
00110110
=
10111110

توجه کنید که اگر 2 بیت نظیر ، هر دو مقدار یک داشتن باز هم شرط برقراره ...


عملگر XOR :

این عملگر درواقع X + OR هست و X به جای عبارت Exclusive به معنای " یکتا " یا " انفرادی " قرار گرفته ، نحوه ی عملش هم دقیقا مثل OR هست با این تفاوت که اگر هر دو بیت متناظر مقدارشون 1 بود در شرط صدق نمی کنه و عدد نهایی در بیت نظیر اونها مقدار صفر می گیره ، مثال :

10011010
00110110
=
10101100

پس : " یا فقط بیت عدد اول یک باشد یا فقط بیت نظیر در عدد دوم یک باشد "


عملگر NOT :

این عملگر صفرهای یک عدد رو به یک و یک های اون رو به صفر تبدیل میکنه ، به عنوان مثال :

NOT 10011010 => 01100101

عملگر SHL :

حروف SHL مخفف عبارت Shift Left هستن ، به معنی انتقال به چپ ، این عملگر ، بیتهای با مقدار یک رو یک رقم به سمت چپ شیفت میده ، به عنوان مثال :

SHL 10011010 => 00110100

توجه کنید که عدد یک آخری حذف و یک صفر از ابتدا به رقمها اضافه شد ، برای درک بهتر تصویر زیر کمکتون می کنه :
-------------------------------------------------

-------------------------------------------------

عملگر SHR :

حروف SHR مخفف عبارت Shift Right هستن و به معنی انتقال به راست ، این عملگر هم مثل SHL عمل میکنه ، با این تفاوت که بیتهای یک رو به سمت راست شبفت میده ، مثال :

SHR 10011010 => 01001101

مانند SHL اگر در سمت راست رقمها عدد یک وجود داشته باشه حذف میشه و از سمت چپ یک صفر اضافه میشه ، برای درک بهتر تصویر زیر کمکتون می کنه ! :
-------------------------------------------------

-------------------------------------------------

خوب ، تا اینجا با عملگرها آشنا شدیم ، به چند نکته دقت کنید :

در زبان C ، که اغلب در الکترونیک و کار با میکروکنترلرها استفاده میشه ، این عملگرها هر کدوم نماد مشخصی دارن که در جدول زیر مشاهده میکنید ، :

عملگر
نماد
 AND&
OR
|
 XOR^
 NOT~
 SHL<<
 SHR>>

پس ، برای استفاده از این عملگرها در زبان C ، باید از نماد معادل اونها استفاده کنید ، این نکته رو هم در نظر بگیرید که اعداد مبنای دو در زبان C با عبارت " 0b " در ابتداشون مشخص می شن ، اعداد مبنای 16 هم با عبارت " 0x " ، عملگرهایی که معرفی شدن ، هم برای مبنای 2 و هم برای مبنای 16 کاربرد دارن ، اگر از این عملگرها برای اعداد مبنای 16 استفاده کنید ، برنامه ابتدا اونها رو به مبنای دو تغییر میده و بعد از تاثیر دادن عملگر بر روی بیتهای عدد مبنای دو اون رو به صورت یک عدد مبنای 16 در میاره .

چند مثال :

A = 0b10011010;
B = 0b00110110;

A & B = 0b00010010

A = ~ B ;
A = 0b11001001;

A = B >> 2;  : یعنی 2 بیت به سمت راست شیفت شود
A = 0b00001101;
...

در زبان دلفی ( یا پاسکال ) از خود عبارت ها به جای نماد اونها استفاده کنید ، نحوه ی استفاده تفاوتی نداره ، توجه کنید که در زبان دلفی نمی تونید مستقیما عدد باینری بنویسید ! ، بلکه باید اعداد رو به صورت مبنای 16 ( Hexadecimal ) بنویسید ، اعداد هگزادسیمال در دلفی با کارکتر " $ " در ابتداشون مشخص می شن.

انشاالله در یک پست جدا در مورد مبناهای عددی و نحوه ی محاسبه ی اونها بحث خواهیم کرد ...
امیدوارم مفید بوده باشه ، موفق باشید ...

 

 :: لینك ثابت نویسنده : محمود مهری نظرات Comment

مطالب اخیر

معرفی کانال و گروه های تلگرام
استفاده از Component Template ها در دلفی
مقاله : نحوه ی استفاده از پنل پیامک در نرم افزار
E-Book :: راه اندازی موتورهای DC و پله ای با استفاده از میکرو کنترلر AVR
آشنایی با عملگرهای بیتی ( Bitwise Operators )
تست دیود و ترانزیستور با مولتی متر
دلفی :: ارسال آرایه به حافظه ی Clipboard
یک سایت فوق العاده برای علاقه مندان به علم فیزیک
مداری برای نمایش عبور جریان برق از بدن !!
سال نو مبارک ...
آدرس وبلاگ !
ساخت یک LED فلاشر با میکروکنترلر AVR ATMega16A
آشنایی با کاربرد " رله " ( Relay ) در مدار
کار با ماتریسها در Matlab
SQL :: آشنایی با دستور شرطی WHERE


صفحات وبلاگ :