کار با بیت ها

 

شاید وجود این مبحث در پیتون (پیتونی که یک از آسانترین زبانهای برنامه نویسی است) کمی به نظرات عجیب باشد ولی گاهی لازم می شود که با بیت ها سروکار داشته باشیم. از این رو در اکثر زبانهای برنامه نویسی عملگرهایی برای کار با بیت تعبیه شده اند.

  • همان طور که می دانید بیت (Bit) کوچکترین واحد برای ذخیره سازی داده هاست . کار با بیت ها می تواند دلایل مختلفی ازجمله انجام عملیات محاسباتی ، کار کردن و ارتباط داشتن با سخت افزار ها به صورت مستقیم ، رمزنگاری و ... داشته باشد. یکی دیگر از موارد مهم استفاده, صرفه جویی در حافظه می باشد (در برنامه های بزرگ).البته برای کار با بیت ها باید با محاسبات باینری(جبر بول) آشنا باشید.

 

عملگرهای بیتی (bit operator):

  • عملگرهای بیتی را می توان به چند دسته تقسیم کرد:
  • 1.عمگر انتقال(shift)
  • 2.عملگر منطقی (همانند درست و غلط )
  • 3.عملگر متمم (یا معکوس)

 

1.عملگرهای انتقال:
  • این عملگر برای انتقال بیت ها به سمت راست یا چپ استفاده می شود. به عنوان مثال عدد 50 به صورت باینری به این صورت نمایش داده می شود(00110010) اگر بخواهیم این عدد را دو بیت به سمت راست منتقل کنیم(تقسیم بر 4) به عدد 12 تبدیل می شود(00001100).
>>> 50 >> 2
12
>>>

همان طور که مشاهده می کنید چون قرار است دو بیت به سمت راست انتقال دهیم دو بیت آخر حذف می شود و طبق قاعده باید دو بیت (با ارزش صفر) به سمت راست اضافه کنیم تا 8 بیت کامل باشد. حال می خواهیم همین عدد 50 را دو بیت به سمت چپ(ضربدر 4) منتقل کنیم.

 

>>> 50 << 2
200
>>>

وقتی عدد 50 را دو بیت به سمت چپ انتقال دهیم به عدد 200 تبدیل می شود. همان طور که در مثال ها مشاهده کردید یک رابطه ای میان انتقال به چپ یا راست و تعداد بیت ها وجود دارد.

پس از این عملگرهای انتقال می توان برای انجام اعمال محاسباتی (ضرب و تقسیم) اعداد صحیح استفاده کرد. ( باید متوجه شده باشید که قسمت اعشاری در جواب ها از بین می رود همان طور که در شکل نشان داده شده است و باید مواظب اینکه سرریز (overflow) رخ ندهد). پس عملگرهای بیتی را می توان فقط برایاعداد صحیح (int , long) بکار برد.

2.عملگرهای منطقی:
  • عملگرهای منطقی برای مقایسه دو بیت از یک عدد صحیح مورد استفاده قرار می گیرد.
  • الف) & (and):
  • بیت نتیجه 1 است اگر و فقط اگر دو بیت 1 باشند در غیر این صورت بیت نتیجه 0 است.
  • ب) | (or):
  • اگر حداقل یکی از بیت ها 1 باشد بیت نتیجه 1 است در غیر این صورت بیت نتیجه 0 است.
  • ج) ^ (xor):
  • اگر دو بیت ارزش مخالف داشته باشند (مثلا یکی 0 و دیگری 1 باشد) بیت نتیجه 1 خواهد بود در غیر این صورت بیت نتیجه 0 است.
  • این عملگرها برای دو عدد صحیح بکار می روند و دو بیت متناظر هر یک را با هم مقایسه می کنند.
  • به مثال زیر توجه کنید:
>>> 50 & 20 16 >>> 50 | 20 54 >>> 50 ^ 20 38 >>>

3.عملگر متمم (معکوس):

  • این عملگر (~) روی ارزش تمام بیت ها تاثیر می گذارد و تمام آنها را معکوس می کند یعنی هر 0 به 1 و هر 1 به 0 تبدیل می شود مثلا عدد 15 (00001111) را معکوس کنیم به عدد 240 (11110000) تبدیل می شود.
  • در پایان باز هم به این نکته اشاره می کنم که عملگرهای بیتی بر روی داده هایی از نوع (long , int) کار می کنند.

صفحه قبلی: پایتون
صفحه بعدی: PyGTK