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.
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.
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.
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,
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