JavaRush /Java blogi /Random-UZ /Java operatorlariga kirish: mantiqiy, arifmetik, bitviy

Java operatorlariga kirish: mantiqiy, arifmetik, bitviy

Guruhda nashr etilgan
Keling, Java-dagi operatsiyalar haqida gapiraylik: raqamli, mantiqiy, bitli. Bu, albatta, dasturlashni o'rganish uchun zarur bo'lgan nazariy asosdir. Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 1

Java-da qanday operatorlar mavjud?

Har qanday operatsiya uchun bizga kamida ikkita narsa kerak bo'ladi:
  • operator;
  • operand.
Operatorning misoli ikkita raqamni qo'shish operatsiyasida oddiy ortiqcha bo'lishi mumkin. Va bir-biriga qo'shilgan raqamlar bu holda operandlar bo'ladi. Shunday qilib, operatorlar yordamida biz bir yoki bir nechta operandlar ustida amallarni bajaramiz. Ikki operand ustida amallarni bajaradigan operatorlar ikkilik deyiladi. Masalan, ikkita raqamni qo'shish. Bitta operand ustida amallarni bajaradigan operatorlar unar deyiladi. Masalan, unary minus.

JavaRush kursida Java operatorlari

Birinchi kvestning to'rtinchi darajasi - Java sintaksisi Java operatorlariga bir nechta ma'ruzalar bag'ishlangan . Xususan, boolean kabi shartli operatorlar . Kursda taqqoslash operatorlari, shartli operatorlar va mantiqiy operatorlarning ishini tushunishga yordam beradigan 22 ta vazifa mavjud.

Java-da raqam operatsiyalari

Dasturchilar raqamlar ustida bajaradigan eng keng tarqalgan operatsiya bu o'zgaruvchiga raqamli qiymat berishdir. U, operator kabi, =sizga tanish:
int a = 1;
int b = 2;
int c = 3;
Arifmetik amallar ham mavjud. Ular ikkilik arifmetik operatorlar yordamida amalga oshiriladi:
Jadval 1. Binar arifmetik operatorlar
Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 2Birinchi to'rtta operator hech qanday savol tug'dirmasligi kerak: hamma narsa matematikada bo'lgani kabi. Oxirgi operator, bo'linishning qolgan qismi ham juda murakkab ish qilmaydi. Masalan, 24 ni 7 ga bo'lsak, 3 ta butun son va 3 ta qoldiqni olamiz. Bu operatorning qolgan qismi qaytariladi:
System.out.println(24 % 7); // prints 3
Rasmiy Oracle hujjatlari saytidan misollar: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 3Bu dastur quyidagilarni chiqaradi: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4/2 = 2 2 + 8 = 10 10 % 7 = 3 Java sizga imkon beradi birlashtirish uchun: masalan, operatorlar topshiriqlari va arifmetik operatorlar. Keling, bir misolni ko'rib chiqaylik:
int x = 0;
x = x + 1; // x = 0 + 1 => x = 1
x = x + 1; // x = 1 + 1 => x = 2
x = x + 1; // x = 2 + 1 => x = 3
Bu erda biz o'zgaruvchini aniqladik xva unga nol qiymatini berdik. Keyinchalik, har bir satrda biz xo'zgaruvchining joriy qiymatining yig'indisiga xva bitta qiymatni belgilaymiz. Izohlarda har bir satr uchun tushuntirishlar mavjud. Ushbu protsedura o'zgaruvchini o'stirish yoki oshirish deb ataladi. Yuqoridagi misoldagi oshirish operatsiyasini operatorlar kombinatsiyasidan foydalangan holda shunga o'xshash operatsiya bilan almashtirish mumkin:
int x = 0;
x += 1; // x = 0 + 1 => x = 1
x += 1; // x = 1 + 1 => x = 2
x += 1; // x = 2 + 1 => x = 3
Siz tayinlash operatorini istalgan arifmetik operator bilan birlashtirishingiz mumkin:
int x = 0;
x += 10; // x = 0 + 10 => x = 10
x -= 5; // x = 10 - 5 => x = 5
x *= 5; // x = 5 * 5 => x = 25
x /= 5; // x = 25 / 5 => x = 5
x %= 3; // x = 5 % 3 => x = 2;
Keling, oxirgi misol qanday ishlashini ko'rsatamiz:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 4
Ikkilik operatorlardan tashqari, Java-da unar arifmetik operatorlar mavjud.
Jadval 2. Birlik arifmetik operatorlar:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 4Birlikdagi ortiqcha va minuslarga misol:
int x = 0;
x = (+5) + (+15); // Parentheses for clarity, it is possible without them
System.out.println("x = " + x);

int y = -x;
System.out.println("y = " + y);
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 6
O'stirish va kamaytirish operatsiyalari juda oddiy. Birinchi holda, o'zgaruvchi 1 ga oshiriladi, ikkinchisida, o'zgaruvchi 1 ga kamayadi. Quyida misol keltirilgan:
int x = 9;
x++;
System.out.println(x); // 10

int y = 21;
y--;
System.out.println(y); // 20
Ushbu operatsiyalarning ikki turi mavjud - postfiks va prefiks. Birinchi holatda operator o'zgaruvchidan keyin, ikkinchi holatda o'zgaruvchidan oldin yoziladi. Yagona farq - oshirish yoki kamaytirish operatsiyasi bajarilganda. Quyidagi jadvaldagi misol va tavsif. Aytaylik, bizda o'zgaruvchi bor:
int a = 2;
Keyin:
3-jadval. O'sish-kamaytirish operatorlari:
Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 5Namoyish:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 8
Arifmetikadan tashqari, taqqoslash operatsiyalari (ikkita raqam) mavjud. Natija har doim to'g'ri yoki noto'g'ri bo'ladi ( true / false ).
Jadval 4. Taqqoslash operatorlari
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 9Misollar:
int a = 1;
int b = 2;

boolean comparisonResult = a == b;
System.out.println("a == b :" + comparisonResult);

comparisonResult = a != b;
System.out.println("a != b :" + comparisonResult);

comparisonResult = a > b;
System.out.println("a >  b :" + comparisonResult);

comparisonResult = a >= b;
System.out.println("a >= b :" + comparisonResult);

comparisonResult = a < b;
System.out.println("a <  b :" + comparisonResult);

comparisonResult = a <= b;
System.out.println("a <= b :" + comparisonResult);
Namoyish:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 10

Java-da mantiqiy operatsiyalar

Keling, ularning har birining mantiqiy operatsiyalari va haqiqat jadvallarini ko'rib chiqaylik:
  • inkor qilish operatsiyasi ( NOT);
  • birikma amali, mantiqiy VA ( AND);
  • disjunksiya operatsiyasi, mantiqiy OR ( OR);
  • modul qo'shish operatsiyasi, eksklyuziv OR ( XOR).
Inkor operatori unary bo'lib, bitta operandga taalluqlidir. Boshqa barcha operatsiyalar ikkilikdir. Keling, ushbu amallarning haqiqat jadvallarini ko'rib chiqaylik. Bu yerda 0 Java tilidagi false ning ekvivalenti , 1 esa true ning ekvivalenti .
5-jadval. Inkor operatori haqiqat jadvali (EMAS)
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 7
Jadval 6. Bog'lovchi operatorining haqiqat jadvali (VA)
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 8
Jadval 7. Ajratish operatorining haqiqat jadvali (OR)
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 9
8-jadval. Modul qo'shish operatorining haqiqat jadvali (XOR)
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 10Java bir xil mantiqiy operatsiyalarga ega:
  • !— inkor operatori;
  • &&— mantiqiy AND operatori (qisqa);
  • ||— mantiqiy OR operatori (qisqa);
  • &— bitli AND operatori;
  • |— bitli OR operatori;
  • ^— bitli eksklyuziv OR operatori.
Keling, barcha haqiqat jadvallarini Java kodiga aylantirgan holda quyida bit va stenografiya operatorlari o'rtasidagi farqni ko'rib chiqaylik:
public class LogicDemo {

   public static void main(String[] args) {
    notExample();
    andExample();
    orExample();
    xorExample();
   }

   public static void notExample() {
    System.out.println("NOT EXAMPLE:");
    System.out.println("NOT false = " + !false);
       System.out.println("NOT true  = " + !true);
    System.out.println();
   }

   public static void andExample() {
    System.out.println("AND EXAMPLE:");
    System.out.println("false AND false = " + (false & false));
    System.out.println("false AND true  = " + (false & true));
    System.out.println("true  AND false = " + (true & false));
    System.out.println("true  AND true  = " + (true & true));
    System.out.println();
   }

   public static void orExample() {
    System.out.println("OR EXAMPLE:");
    System.out.println("false OR false = " + (false | false));
    System.out.println("false OR true  = " + (false | true));
    System.out.println("true  OR false = " + (true | false));
     System.out.println("true  OR true  = " + (true | true));
    System.out.println();
   }

   public static void xorExample() {
    System.out.println("XOR EXAMPLE:");
    System.out.println("false XOR false = " + (false ^ false));
    System.out.println("false XOR true  = " + (false ^ true));
    System.out.println("true  XOR false = " + (true ^ false));
    System.out.println("true  XOR true  = " + (true ^ true));
    System.out.println();
   }
}
Bu dastur ko'rsatadi: MISOL EMAS: FALSE EMAS = rost EMAS = noto'g'ri VA O'RNAK: noto'g'ri VA noto'g'ri = noto'g'ri noto'g'ri VA rost = noto'g'ri rost VA noto'g'ri = noto'g'ri rost VA rost = rost YOKI MISAL: noto'g'ri OR false = noto'g'ri YOKI rost = rost rost YOKI false = rost rost YOKI rost = rost XOR MISOL: notogri XOR false = notogri false XOR rost = rost rost XOR false = rost rost XOR true = false Mantiqiy operatorlar faqat booleanoʻzgaruvchilar uchun amal qiladi. Bizning holatlarimizda biz ularni to'g'ridan-to'g'ri qiymatlarga qo'lladik, lekin siz ularni booleano'zgaruvchilar bilan ham ishlatishingiz mumkin:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 15
Va iboralarga boolean:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 16
Endi bizda stenografiya operatorlari ( &&, ||) va shunga o'xshash bitli operatorlar ( &, |) mavjud. Ularning orasidagi farq nima? Birinchidan, bit bo'yicha butun sonlarga qo'llanilishi mumkin. Bu haqda biroz keyinroq gaplashamiz. Va ikkinchidan, ba'zilari qisqartirilgan, boshqalari esa yo'q. Qisqartirish qanday ko'rinishini tushunish uchun keling, iborani ko'rib chiqaylik:

false AND x = ?
true OR x = ?
Bu xhar qanday mantiqiy qiymatni olishi mumkin. Va umuman olganda, mantiq va haqiqat qonunlariga ko'ra jadvallar, u x to'g'ri yoki noto'g'ri bo'lishidan qat'i nazar , birinchi ifodaning natijasi noto'g'ri , ikkinchisining natijasi esa to'g'ri bo'ladi . Qarang.
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 17
Ba'zan ifoda natijasini birinchi operanddan hisoblash mumkin. Bu qisqartirilgan operatorlarni ajratib turadigan narsa &&va ||. Yuqorida tavsiflanganlarga o'xshash iboralarda ular ikkinchi operandning qiymatini baholamaydi. Mana kichik bir misol:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 18
Qisqartirilgan operatorlarda ifodaning ikkinchi qismi baholanmaydi. Ammo bu faqat ifodaning natijasi birinchi operanddan aniq bo'lganda sodir bo'ladi.

Java-da bitli operatsiyalar

Xo'sh, biz eng qiziqarli qismga keldik: bitli operatsiyalar. Nomidan ko'rinib turibdiki, bu bitlar ustida bajariladigan operatsiyalar. Ammo bu mavzuga kirishdan oldin, tegishli sohalar haqida gapirishga arziydi.

Ikkilik sanoq sistemasida sonlarni tasvirlash

Raqamlar, dasturdagi boshqa ma'lumotlar kabi, kompyuter xotirasida ikkilik kodda saqlanadi. Ikkilik kod - bu nollar va birliklar to'plami. Har bir nol yoki bitta bit deb ataladigan axborot birligini ifodalaydi.

Vikipediyaga ko'ra:

Bit (ingliz tilidan ikkilik raqam - ikkilik raqam; shuningdek, so'zlarni o'ynash: inglizcha bit - parcha, zarracha) - axborot miqdorini o'lchash birligi. 1 bit ma'lumot ikki ma'noga ega bo'lishi mumkin bo'lgan belgi yoki signaldir: yoqilgan yoki o'chirilgan, ha yoki yo'q, yuqori yoki past, zaryadlangan yoki zaryadlanmagan; ikkilik tizimda u 1 (bir) yoki 0 (nol) ga teng.

Bitli operatorlar qanday ma'lumotlar bilan ishlaydi?

Java tilidagi bitli amallar faqat butun sonlarda bajariladi. Butun sonlar kompyuter xotirasida bitlar to'plami sifatida saqlanadi. Aytishimiz mumkinki, kompyuter har qanday ma'lumotni ikkilik sanoq tizimiga (bitlar to'plami) aylantiradi va shundan keyingina u bilan o'zaro ta'sir qiladi. Ammo ikkilik sanoq tizimi qanday ishlaydi? O'nlik sanoq sistemasida bizda bor-yo'g'i 10 ta belgi mavjud: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Hisoblash uchun bu belgilardan foydalanamiz. 9 dan keyin 10, 19 dan keyin - 20, 99 dan keyin - 100, 749 - 750 dan keyin keladi. Ya'ni, biz mavjud 10 ta belgining kombinatsiyasidan foydalanamiz va ularni "noldan tushlikgacha" hisoblash uchun ishlatishimiz mumkin. Ikkilik sanoq sistemasida o'nta belgi o'rniga faqat ikkitasi - 0, 1. Lekin bu belgilarni o'nlik sanoq sistemasidagi kabi printsip bo'yicha birlashtirib, biz cheksiz sanashimiz mumkin.
0 dan 15 gacha hisoblashni o'nlik va ikkilik sanoqda ko'rsatamiz:
Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 11Ko'rib turganingizdek, hamma narsa unchalik murakkab emas. Bitlardan tashqari, boshqa tanish ma'lumotlar birliklari ham mavjud - baytlar , kilobaytlar , megabaytlar , gigabaytlar va boshqalar. 1 baytda 8 bit borligini bilsangiz kerak . Bu nima degani? Bu degani, ketma-ket 8 bit 1 baytni egallaydi. Mana baytlar qanday bo'lishi mumkinligiga misollar:

00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Bitta baytdagi mumkin bo'lgan takrorlanmaydigan bit birikmalarining soni 256 ta (2 8 = 256). Ammo keling, Java-ga yaqinroq qaytaylik. Bunday butun sonli ma'lumotlar turi mavjud - byte. Bu tip -128 dan 127 gacha qiymatlarni qabul qilishi mumkin va kompyuter xotirasidagi bitta raqam atigi 8 bit yoki 1 baytni egallaydi. byteBunday turdagi bitta raqam kompyuterning 1 ta xotirasini egallaydi . Va bu erda nomlar tasodifiy emas. Esda tutganimizdek, 1 bayt 256 xil qiymatni saqlashi mumkin. Va bitta turdagi raqam byte256 xil qiymatni olishi mumkin (128 salbiy, 127 ijobiy va 1 nol). Har bir raqam qiymati bytesakkiz bitdan iborat noyob to'plamga ega. Bu nafaqat type ga byte, balki barcha integral tiplarga ham tegishli. Tur byteeng kichigi sifatida misol tariqasida keltirilgan. Quyidagi jadvalda barcha Java tamsayı turlari va ular egallagan xotira maydoni ko'rsatilgan: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 12turini ko'rib chiqing int. U 2147483648 salbiy qiymatlarni, 2147483647 ijobiy qiymatlarni va bitta nolni saqlashi mumkin. Jami:

2147483648 + 2147483647 + 1 = 4294967296.
Bu tip kompyuter xotirasida 32 bitni egallaydi. 32 nol va birlar to'plamidan mumkin bo'lgan kombinatsiyalar soni:
232 = 4294967296.
Turga ega bo'lishi mumkin bo'lgan qiymatlar soni bilan bir xil raqam int. Bu faqat ma'lumotlar turi qiymatlari diapazoni va uning o'lchami (xotiradagi bitlar soni) o'rtasidagi munosabatlarning namoyishi. Java-dagi har qanday turdagi raqamlar ikkilik formatga aylantirilishi mumkin. Keling, buni Java tili yordamida qanchalik oson bajarish mumkinligini ko'rib chiqaylik. Biz turdagi misoldan bilib olamiz int. Bu tur o'zining o'rash sinfiga ega - Integer. Va uning bittasi bor toBinaryString, u biz uchun barcha ishlarni bajaradi:
Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 21
Voila - bu unchalik murakkab emas. Lekin shunga qaramay, bir narsani aniqlashtirish kerak. intraqam 32 bitni oladi. Lekin yuqoridagi misoldagi 10 raqamini chop etganimizda konsolda 1010 ni ko'ramiz.Buning sababi, bosh nollar chop etilmaydi. Agar ular ko'rsatilsa, 1010 o'rniga biz konsolda 000000000000000000000000000001010 raqamini ko'ramiz. Lekin idrok etish qulayligi uchun barcha bosh nollar o'tkazib yuborilgan. O'zingizdan so'ramaguningizcha qiyin emas: salbiy raqamlar haqida nima deyish mumkin? U axborotni faqat ikkilik tizimda qabul qiladi. Ma'lum bo'lishicha, minus belgisi ham ikkilik kodda yozilishi kerak. Bu to'g'ridan-to'g'ri yoki qo'shimcha kod yordamida amalga oshirilishi mumkin.

To'g'ridan-to'g'ri kod

Ikkilik sanoq sistemasida raqamlarni ifodalash usuli, bunda eng muhim bit (eng chap bit) raqam belgisiga ajratiladi. Agar raqam ijobiy bo'lsa, eng chap bitga 0, salbiy bo'lsa - 1 yoziladi.
Misol sifatida 8 bitli raqam yordamida buni ko'rib chiqaylik:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 13Yondashuv oddiy va printsipial jihatdan tushunarli. Biroq, uning kamchiliklari bor: matematik operatsiyalarni bajarishda qiyinchiliklar. Masalan, manfiy va musbat sonlarni qo'shish bilan. Qo'shimcha manipulyatsiyalar amalga oshirilmasa, ularni katlab bo'lmaydi.

Qo'shimcha kod

Qo'shimcha koddan foydalanib, siz to'g'ridan-to'g'ri kodning kamchiliklaridan qochishingiz mumkin. Raqamning qo'shimcha kodini olishning oddiy algoritmi mavjud. Keling, -5 raqami uchun qo'shimcha kodni olishga harakat qilaylik. Bu sonni ikkilik sanoq sistemasidagi ikkita to‘ldiruvchi kod yordamida ifodalaylik. Qadam 1. Biz to'g'ridan-to'g'ri kod yordamida salbiy sonning ko'rinishini olamiz. -5 uchun u 10000101 bo'ladi. 2-qadam. Belgi raqamidan tashqari barcha raqamlarni o'zgartiring. Keling, barcha nollarni birlar bilan, eng chap bitdan tashqari hamma joyda nol bilan almashtiraylik.

10000101 => 11111010
3-qadam. Olingan qiymatga bittasini qo'shing:

11111010 + 1 = 11111011
Tayyor. Ikkilik to'ldiruvchi kod yordamida ikkilik sanoq sistemasida -5 qiymatini oldik. Bu quyidagi materialni tushunish uchun muhim, chunki Java manfiy raqamlarni bitlarda saqlash uchun ikkita to'ldiruvchi koddan foydalanadi.

Bitli amallarning turlari

Endi biz barcha kirishlarni ko'rib chiqdik, keling, Java-da bitli operatsiyalar haqida gapiraylik. Butun sonlar ustida bitli operatsiya bajariladi va uning natijasi butun sondir. Bu jarayonda son ikkilik sistemaga aylantiriladi, har bir bit ustida amal bajariladi va natija yana o‘nlik kasrga aylantiriladi. Amallar ro'yxati quyidagi jadvalda keltirilgan: Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 14Biz allaqachon bilib olganimizdek, raqamlarni bitlar to'plami sifatida ko'rsatish mumkin. Bitli operatsiyalar bunday tasvirning har bir biti ustida operatsiyalarni bajaradi. Keling NOT, AND, OR, , ni olaylik XOR. Eslatib o'tamiz, yaqinda biz haqiqat jadvallarini faqat mantiqiy operandlar uchun ko'rib chiqdik. Bunday holda, butun sonning har bir bitiga bir xil amallar qo'llaniladi.

Bit bo'yicha unar operator NOT ~

Bu operator barcha nollarni birlarga, hammasini esa nolga almashtiradi. Aytaylik, bizda 10 raqami o'nli tizimda mavjud. Ikkilik tizimda bu raqam 1010 ga teng. Agar bu raqamga birlamchi bitli inkor operatorini qo‘llasak, quyidagiga ega bo‘lamiz: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 15Keling, uning Java kodida qanday ko‘rinishini ko‘rib chiqamiz:
public static void main(String[] args) {
   int a = 10;

   System.out.println(" a = " + a + "; binary string: " + Integer.toBinaryString(a));
   System.out.println("~a = " + ~a + "; binary string: " + Integer.toBinaryString(~a));
}
Endi konsolda nima ko'rsatilishini ko'rib chiqamiz:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 25
Birinchi qatorda biz ikkilik sanoq sistemasidagi qiymatni bosh nolsiz oldik. Garchi biz ularni ko'rmasak ham, ular o'sha erda. Bu barcha bitlar teskari bo'lganlarga aylantirilgan ikkinchi qatordan dalolat beradi. Shuning uchun biz juda ko'p etakchi birliklarni ko'ramiz. Bular birinchi qatorda chop etilganda kompilyator tomonidan e'tiborga olinmagan oldingi bosh nollardir. Mana, aniqlik uchun bosh nollarni ko'rsatadigan kichik dastur.
Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 26

Bitwise AND operatori

Ushbu operator ikkita raqamga tegishli. ANDU har bir raqamning bitlari orasidagi amalni bajaradi . Bir misolni ko'rib chiqamiz: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 16Bu operatsiya ikkita raqamda bajariladi. Java kodidagi misol:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 28

Bitwise OR operatori

OR ikkita raqamga tegishli. U har bir raqamning bitlari orasida OR operatsiyasini bajaradi: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 17Endi IDEA da bu qanday ko'rinishini ko'rib chiqamiz:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 30

Bit bo'yicha operatsiya, eksklyuziv OR (XOR)

Keling, xuddi shu misolni ko'rib chiqaylik, lekin yangi operatsiya bilan: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 18Kod misoli:
Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 32

Bit boʻyicha chapga siljitish

Bu operator ikkita operandga taalluqlidir, ya'ni operatsiyada x << ysonning bitlari o'rinlarni chapga xsiljitadi . yBu nima degani? Amaliyot misolini ko'rib chiqamiz.Operatsiya 10 << 1 Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 19natijasi o'nlik sanoq sistemasidagi 20 raqami bo'ladi. Yuqoridagi diagrammadan ko'rinib turibdiki, barcha bitlar chapga 1 ga siljiydi. Bu operatsiya davomida eng muhim bit (eng chap bit) qiymati yo'qoladi. Va eng kam ahamiyatli bit (eng o'ngdagi bit) nol bilan to'ldiriladi. Ushbu operatsiya haqida nima deya olasiz?
  1. Raqamning bitlarini chapga bit Xbilan siljitish orqali biz raqamni 2 N ga ko'paytiramiz .NX

    Mana bir misol:

    Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 34
  2. Lekin! Agar 1 qiymatiga ega bit eng chap pozitsiyani egallasa, raqamning belgisi o'zgarishi mumkin.

  3. Agar cheksiz vaqt davomida chapga siljisangiz, raqam shunchaki 0 ​​ga aylanadi. 2 va 3 bandlarni ko'rsatamiz:

    Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 35

Bit boʻyicha oʻngga siljitish

Bu operator ikkita operand uchun amal qiladi. Bular. operatsiyada x >> yraqamning bitlari pozitsiyalarni o'ngga xsiljitadi . yKeling, yana bir misolni ko'rib chiqaylik. Keling, operatsiyani sxematik tahlil qilaylik 10 >> 1. Keling, 10 raqamining barcha bitlarini bitta pozitsiyadan o'ngga siljitamiz: Java operatorlari bilan tanishish: Mantiqiy, Arifmetik, Bitwise - 20Shishish operatsiyasi paytida biz to'g'ri bitlarni yo'qotamiz. Ular shunchaki yo'qoladi. Eng chap bit sonning belgisidir (0 musbat, 1 manfiy). Shuning uchun, yakuniy qiymatda u asl raqamdagi kabi joylashtiriladi. Salbiy raqamga misol: Java operatorlariga kirish: Mantiqiy, Arifmetik, Bitwise - 21eng o'ngdagi bit yo'qoladi va eng chap bit raqamning faxriy belgisi sifatida asl raqamdan ko'chiriladi. Bularning barchasini IDEA-da qanday qilish mumkin? Asos sifatida, hech qanday murakkab narsa yo'q, shunchaki oling va harakatlantiring:
Знакомство с операторами Java: логические, арифметические, побитовые - 38
Hozir. O'ngga siljigan raqamlar haqida nima deya olasiz? Ular 2 ga bo'linadi. Har safar bir bitni o'ngga siljitganimizda, asl sonni 2 ga bo'lamiz. Agar raqam 2 ga bo'linmasa, natija minus cheksizlikka (pastga) yaxlitlanadi. Lekin bu faqat bitlarni 1 ga siljitsakgina ishlaydi. Va agar 2 bitga bo'lsa, 4 ga bo'linadi. 3 bitga bo'linadi, 8 ga bo'linadi. 4 bitga 16 ga bo'linadi. Qarang? X2 ning kuchlari... Raqamni o'ngga bitlarga siljitganimizda , sonni 2 ga 2 ning darajasiga Nbo'lamiz . Namoyish: XN
public class BitOperationsDemo {

   public static void main(String[] args) {

    for (int i = 1; i <= 10; i++) {

        int shiftOperationResult = 2048 >> i;
        int devideOperationResult = 2048 / (int) Math.pow(2, i);


           System.out.println(shiftOperationResult + " - " + devideOperationResult);
    }

   }

}
Bu yerda nima bo'lyapti?
  1. i o'zgaruvchisi 1 dan 10 gacha oshiriladigan tsikl.

  2. Har bir iteratsiyada biz 2 qiymatni hisoblaymiz:
    • O'zgaruvchiga shiftOperationResult2048 raqamini i bitga o'ngga siljitish natijasini yozamiz;

    • devideOperationResult2048 raqamini i darajasiga 2 ga bo'lish natijasini o'zgaruvchiga yozamiz .

  3. Olingan ikkita qiymatni juftlikda ko'rsatamiz.

Dasturni bajarish natijasi quyidagicha: 1024 - 1024 512 - 512 256 - 256 128 - 128 64 - 64 32 - 32 16 - 16 8 - 8 4 - 4 2 - 2

Bit boʻyicha oʻngga siljish, nol toʻldirish bilan

Oddiy o'ngga siljish raqamning belgisini saqlab qolsa (eng muhim bit o'z qiymatini saqlab qoladi), nol to'ldirish o'ngga siljish saqlamaydi. Va eng muhim bit nol bilan to'ldiriladi. Keling, qanday ko'rinishini ko'rib chiqaylik: Знакомство с операторами Java: логические, арифметические, побитовые - 22

Java tilidagi amallarning ustuvorligi

Matematikaga o'xshab, Java ham operatsiyalarning ustuvorligiga ega. Quyidagi jadvalda biz ko'rib chiqqan operatsiyalarning ustuvorligi (eng yuqoridan pastgacha) ko'rsatilgan. Знакомство с операторами Java: логические, арифметические, побитовые - 23

Foydalanishning foydali misollari

Sonning paritetini aniqlash

Знакомство с операторами Java: логические, арифметические, побитовые - 24

Massivdagi maksimal elementni topish

Знакомство с операторами Java: логические, арифметические, побитовые - 25Minimal elementni topish uchun taqqoslash belgisini kerakli joyda o'zgartirish kifoya.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION