Bitwise operatorlari nima va ular qanday ishlaydi?

Bitwise operatorlari nima va ular qanday ishlaydi?

Bitwise operatorlari nima

Asosiy vazifa: binary turdagi ma’lumotlar bilan ishlashda qo’llaniladi. Binary ma’lumotlar bu 2 lik sanoq sistemasidagi ma’lumotlar. Masalan 101001 shu turga kiradi.

Binary bilan ishlash.

Qisqa tushuncha.

Biz ishlatadigan odatiy sonlar (masalan, 1, 75, 1999) 10 lik sanoq sistemasidagi sonlar hisoblanadi. Ya’ni, biz bunday sonlarni ifodalashda 10 ta raqamdan foydalanamiz: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Binary turdagi ma’lumotlar esa 2 lik sanoq sistemasida. Ular faqat 0 va 1 yordamida ifodalanadi.

10 likdan 2 likka o’tish.

10 likdagi sonni 2 likka o’tkazishni matematik usuli bor. Lekin biz buni Pythonchasiga hal qlib qo’ya qolamiz.

bin() funksiyasi har qanday 10 likdagi sonni 2 likka o’tkazib beradi.

\>>> bin(7)

‘0b111’

Funksiya string qiymat qaytaradi. Namunadagi 111 bu 7 ning 2 likdagi ko’rinishi. Boshidagi ‘0b’ esa bu son 2 likda ekanligini bildirib turish uchungina qo’shiladi. Hisoblashda u bizga kerak emas. Demak, o’nlikdagi 7 ikkilikda 111 ko’rinishiga keladi.

& operatori

Hisoblashlarda 1 True, 0 esa False deb olinadi.

a & b – bunda a va b operandlar deyiladi. & operatori har ikkala operandda bor raqamlardan yangi raqam hosil qiladi. Bu degani ikki raqam taqqoslanayotganda ulardan har ikkisi True (ya’ni 1) bo’lganda natija 1 deb olinadi, aks holda 0. Buni tushunish uchun avval sonlarni 2 likka o’tkazamiz.

7 & 2

7 = 111

2 = 10

Son oldiga nol qo’shish natijaga ta’sir qilmaydi. Biz har ikkala sondagi xonalar bir xil bo’lishi uchun 2 ni oldiga bitta 0 qo’shamiz. Demak,

2 = 010

Endi har bir sondagi raqamlarni taqqoslab, natijalarni olamiz.

Ikkala operandning 1-raqamiga qaraymiz: 1 va 0. Biz bilamizki, «True and False» bu False qiymat qaytaradi. False esa 0 deb olinadi. Demak, natija sifatida 0 qiymat olamiz. Yangi sonimizning 1-raqami 0.

Ikkala operandning 2-raqamlariga qaraymiz. 1 va 1. Ular bir xil va «True and True» kabi True qiymat qaytaradi. True esa 1 degani. Demak, 1 qiymat olamiz. Yangi sonning 2-raqami 1.

Ikkala operandning 3-raqamlari 1 va 0. Demak, undan 0 qiymat olib, yangi sonimizning 3-raqami sifatida yozib qo’yamiz.

Bizda 010 ko’rinishidagi yangi raqam hosil bo’ldi. Bu 10 lik da 2 ga teng. 2 likdagi sonni 10 likka o’tkazish uchun int() dan foydalanamiz.

UNUTMANG: 2 likdagi sonni yozganda oldiga 0b qo’shish shart. Biz faqat hisoblashda xalal bermasligi uchun uni olib tashlagandik, kodda esa bu kerak.

\>>> int(‘0b010’, 2)

2

Funksiyadagi 2 bu berilgan son 2 lik sanoq sistemasidaligini bildiradi.

| (OR) operatori

Bu operator yo u, yo bu operandda bor raqamlardan yangi son hosil qiladi. Bu degani, har ikki operanddagi raqamlar taqqoslash paytida ikkalasidan bittasi True (ya’ni 1) bo’lsa, natija 1 deb olinadi, aks holda 0.

7 | 2

7 = 111

2 = 010

3 ta raqamni taqqoslaymi:

1) 1 va 0 => 1

2) 1 va 1 => 1

3) 1 va 0 => 1

Yangi son: 111. Bu 10 likdagi 7 ga teng.

^ (XOR) operatori

Bu operator har ikkala operandning yo unisida yo bunisida bor raqamlardan yangi son hosil qiladi. Bu xuddi | (or) ga o’xshaydi, lekin bitta farqi, u har ikkala sonda bor raqamni olmaydi. Ya’ni taqqoslanayotgan raqamlar bir xil bo’ganda 0 qiymat olinadi.

7 ^ 2

7 = 111

2 = 010

3 ta raqamni taqqoslaymiz:

1) 1 va 0 => 1

2) 1 va 1 => 0 (ikkalasi bir xil bo’lgani uchun 0 olinadi)

3) 1 va 0 => 1

Yangi son: 101. Bu 10 likda 5 ga teng.

\>>> int(‘0b101’, 2)

5

<< va >>

a >> n

Bu a sondagi raqamlarni n birlik o’ngga surishni anglatadi. Tushunish uchun misol keltiramiz:

0b1000 >> 2

0b1000 ni 2 xona o’ngga sursak, 0b0010 hosil bo’ladi. Uni standart shaklda 0b10 qilib yozamiz. Chunki boshidagi 0 lar natijaga ta’sir qilmaydi.

a << n

Bunisi esa n ta birlik chapga surish kerakligini ko’rsatadi.

0b0010 << 1

0b0010 ni 1 birlik chapga sursak, 0b0100 hosil bo’ladi.

Bitvays (bitwise) operatorlari haqida hozircha bilganlarim shular. Bu yetarli bo’lishi kerak. Mulohaza va savollarni @python_uz da kutaman.

Muallif: Future Dreams

Manba

Bitwise operatorlari nima

Bitwise operatorlari nima va ular qanday ishlaydi? 3