پایتون

جلسه ۱۱: عملگرهای Bitwise (بیتی) در پایتون

در این درس به چند عملگر مختلف برای Bitwise میپردازیم.

در برنامه نویسی، همه داده ها از ۰ ها و ۱ ها تشکیل شده است و عملگرهای Bitwise به ما این امکان را میدهند تا عملیات‌هایی مربوط به بیت ها را روی این مقادیر بیتی انجام دهیم.

مثال هایی از این عملگرها:

num1 = 10  # Binary value = 01010
num2 = 20  # Binary Value = 10100

print(num1 & num2)   # 0   -> Binary value = 00000
print(num1 | num2)   # 30  -> Binary value = 11110
print(num1 ^ num2)   # 30  -> Binary value = 11110
print(~num1)         # -11 -> Binary value = 1111 0101
print(num1 << 3)     # 80  -> Binary value = 0101 0000
print(num2 >> 3)     # 2   -> Binary value = 0010

توضیحات

در خط ۴ از کد بالا، ما عملیات AND را نمایش داده‌ایم. این عملگر یک بیت از num1 و بیت متناظر آن را از num2 میگیرد و عمل AND را روی آن ها اجرا میکند.

(در یک راه ساده‌تر، میتوان AND را اینگونه در نظر گرفت که دو متغیر را در هم ضرب میکند )

حالا این مثال را بیشتر بررسی کنیم:

  • متغیر num1 در حالت باینری ۰۱۰۱۰ است و num2 در حالت باینری ۱۰۱۰۰ است.
  • در مرجله اول، اولین بیت از هرکدام از این متغیرها جدا میشود
    • ۰۱۰۱۰
    • ۱۰۱۰۰
  • ۱&0 نتیجه ۰ میدهد( میتوان مانند یک ضرب نیز به آن نگاه کرد)
  • بعد دومین بیت را در نظر میگیریم
    • ۰۱۰۱۰
    • ۱۰۱۰۰
  • AND بین این دو مقدار باز هم ۰ است.
  • این عملیات ها را برای هر جفت بیت از دو متغیر انجام میدهیم. که در این مثال برای همه، نتیجه ۰ است.
  • در نهایت، نتیجه خروجی ۰۰۰۰۰ خواهد بود.

علمیات OR در خط پنج به همین منوال انجام میشود اما به جای ضرب، عمل جمع بین دو بیت انجام میشود.

۰OR1 به ما خروجی ۱ میدهد و ۱OR1 هم همینطور(یک مقدار باینری از یک بزرگ‌تر نخواهد بود) اما ۰OR0 به ما مقدار ۰ برمیگرداند( ۰+۰ برابر ۰ است).

عملگرهای XOR و NOT هم بدین صورت بر روی بیت ها اعمال میگردند. شما میتوانید با اجرا و تغییر کدهای بالا این موضوع را بیشتر متوجه بشوید.

عملگرهای شیفت بیتی(>> یا << )، بیت‌ها را به طور کامل به سمت راست یا چپ انتقال میدهد. وقتی یک مقدار باینری شیفت داده میشود مقدار ۰ در طرف دیگر حرکت، وارد متغیر میشود چراکه اندازه بیت‌ها بعد از شیفت هم باید ثابت باشد.

حال فرض کنید ما عدد ۰۱۱۰ ( همان ۶ در حالت دسیمال) را داریم. عملیاتی که بررسی میکنیم ۲<<0110 است.

  • ۲<<0110
  • ۰۰۱۱(یک مرحله شیفت به سمت راست)
  • ۰۰۰۱(یک مرحله دیگر شیفت به راست)
  • عملگر اعمال شد.

به طور مشابه ما میتوانیم مقدار ۰۱۱۰ را دوبار به سمت چپ شیفت بدهیم با استفاده از عملگر ۲>>0110

  • ۲>>0110
  • ۰۱۱۰۰(یک مرحله شیفت به چپ)
  • ۰۱۱۰۰۰(یک مرحله دیگر شیفت به چپ)
  • عملگر اعمال شد.

نکته: توجه شود که در پایتون صفرهای سمت چپ حذف میشوند و اهمیتی ندارند، یعنی عدد ۰۰۱۱ با عدد باینری ۱۱ یکی است. به طور مشابه عدد ۰۰۰۱۰۱۱ با عدد ۱۰۱۱ یکی است.

اکنون ما همه عملگرها را در پایتون آموختیم.در آینده خواهید دید که در طول دوره برای ما مفید خواهند بود.

درس بعدی عملیات های String بررسی میکنیم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا