Bit amallar

Bit amallar

Bit amallar

Bit amallar bitlarning ustida bajarilganligi sabab bit amallar nomini olgan. Protsessorga yaqin bo’lgani uchun bajaralishi jihatdan ancha tez. Bugun shu amallarga qisqacha nazar tashlaymiz. Ko’plab muammolarni hal qilishda juda qo’l kelishi mumkin.

Demak bu galgi maqolamizda quyidagilar o’rganiladi:

  • 1) Ikkilik And(&) amali.
  • 2) Ikkilik Or(|) amali.
  • 3) Ikkilik Xor(^) amali.
  • 4) Ikkilik Not(~) amali.
  • 5) Ikkilik O’nga surish(>>) amali.
  • 6) Ikkilik Chapga surish() amali.

Bundan keyin maqolalarmizda, ushbu amallar yordamida amalga oshirilishi mumkin bo’lgan go’zal usullarni taqdim etishga harakat qilamiz.

Maqolaning asosiy qismini boshlashdan oldin quyidagi jadvalga nazar solishingizni so’rayman. Ushbu jadvalda 1 dan 10 gacha bo’lgan o’nlik sanoq sistemasidagi sonlarning ikkilik sanoq sistemasidagi ko’rinishi berilgan. Ushbu maqolada asosan
byte ma’lumotlar tipidan foydalanamiz shuning uchun barcha sonlar 8 bit ko’rinishida berilgan.

Ikkilikda

O’nlikda

7 6 5 4 3 2 1 0
128 64 32 16 8 4 2 1
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 0 2
0 0 0 0 0 0 1 1 3
0 0 0 0 0 1 0 0 4
0 0 0 0 0 1 0 1 5
0 0 0 0 0 1 1 0 6
0 0 0 0 0 1 1 1 7
0 0 0 0 1 0 0 0 8
0 0 0 0 1 0 0 1 9
0 0 0 0 1 0 1 0 10

1) Ikkilik And(&) amali. Ikki sonning ikkilik ko’rinishidagi har bitini bir-biriga solishtirib chiqadi. Solishtirish jarayonida quyidagi qoidaga amal qiladi.

bit amallar 65e4b722e800f

Aytaylik,
7 & 3 ifodani hisoblashimiz kerak. Yuqoridagi jadvaldan 7 ning va 3 ning ikkilik ko’rinishi topib olamiz(yoki o’zingizda qo’lda ikkilikda o’tqazishingiz mumkin). Va quyidagi amalni bajaramiz.

Amal Ikkilikda O’nlikda
& 0 0 0 0 0 1 1 1 7
0 0 0 0 0 0 1 1 3
0 0 0 0 0 0 1 1 3

Har ikkala soning 1-bitidagi sonlarni o’zaro taqqoslab natijaning 1-bitiga yozamiz. Shu tarzda davom etiladi, natija esa 3 bo’ladi.

Console.WriteLine(7 & 3);
// Natija: 3

2) Ikkilik Or(|) amali. Va amalida bajarilganidek sonlarning ikkilik ko’rinishida ishlaymiz. Bu amalning qoidasi quyidagidan iborat.

bit amallar 65e4b72351d27

Or(1) uchun ham, 7 va 3 sonlarini tanlab olaylik, ifoda: 7 | 3. Va quyidagi amalni bajaramiz.

Amal Ikkilikda O’nlikda
| 0 0 0 0 0 1 1 1 7
0 0 0 0 0 0 1 1 3
0 0 0 0 0 1 1 1 7

Har ikkala soning 1-bitidagi sonlarni o’zaro taqqoslab natijaning 1-bitiga yozamiz. Shu tarzda davom etialdi, Natija esa 7 bo’ladi.

Console.WriteLine(7 | 3);
// Natija: 7

3) Ikkilik Xor(^) amali. Bir xil xonada yotgan bitlarni quyidagi qoidaga ko’ra o’zgartirib chiqib natijani olamiz.

bit amallar 65e4b7239fe0d

Ifoda:
7 ^ 3 Va quyidagi amalni bajaramiz.

Amal Ikkilikda O’nlikda
^ 0 0 0 0 0 1 1 1 7
0 0 0 0 0 0 1 1 3
0 0 0 0 0 1 0 0 4

Har ikkala soning 1-bitidagi sonlarni o’zaro taqqoslab natijaning 1-bitiga yozamiz. Shu tarzda davom etiladi, Natija esa 4 bo’ladi.

Console.WriteLine(7 ^ 3);
// Natija: 4

3) Ikkilik Not(~) amali. Bu usul o’ziga xosligi bilan qolgan amallardan ajralib turadi. Faqat bitta son bilan amalga oshiraladi. Aytaylik 7 soni uchun ushbu amalni bajaraylik. 7 ning ikkilik ko’rinishida yozib olib, har bir xonasini teskari qiymatga o’girib chiqamiz. Ya’ni 1 lar 0 larga, 0 lar 1 larga aylanadi. Ifoda: ~7.

Amal Ikkilikda O’nlikda
~ 0 0 0 0 0 1 1 1 7
1 1 1 1 1 0 0 0 -8

signed tiplarda berilgan sonlarning ikkilik ko’rinishidagi chapdan birinchi xonaning qiymati 1 ga teng bo’lsa bu san manfiy son ekanligini anglatadi. 0 esa musbat. Demak,

bit amallar 65e4b723eea43

Console.WriteLine(~7);
    // Natija: -8

5) Ikkilik O’nga surish(>>) amali. Sonning ikkilikdagi ko’rinishida, har bit o’ng tomonga so’ralgan miqdorda suradi. Masalan Ifoda: 7 >> 1.

Console.WriteLine(~7);
// Natija: -8

6) Ikkilik Chapga surish() amali. Sonning ikkilikdagi ko’rinishida, har bitini chap tomonga so’ralgan miqdorda suradi. Masalan Ifoda: 7 .

Console.WriteLine(7                        Manba: 
                    

        

Algoritm
Bit amallar