JavaRush /Blog Java /Random-MS /Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwis...

Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise

Diterbitkan dalam kumpulan
Mari kita bercakap tentang operasi dalam Java: angka, logik, bitwise. Ini adalah asas teori yang pasti diperlukan untuk mempelajari cara memprogram. Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 1

Apakah jenis pengendali di Jawa?

Untuk sebarang operasi kami memerlukan sekurang-kurangnya dua perkara:
  • pengendali;
  • operan.
Contoh pengendali ialah tambah mudah dalam operasi menambah dua nombor. Dan nombor yang ditambah antara satu sama lain akan menjadi operan dalam kes ini. Jadi, dengan bantuan pengendali, kami melakukan operasi pada satu atau lebih operan. Operator yang melakukan operasi pada dua operan dipanggil binari. Contohnya, menambah dua nombor. Operator yang melakukan operasi pada satu operan dipanggil unary. Contohnya, tolak unari.

Operator Java dalam Kursus JavaRush

Beberapa kuliah dikhaskan kepada pengendali Java pada tahap keempat pencarian pertama - Sintaks Java. Khususnya, pengendali bersyarat seperti boolean . Kursus ini mengandungi 22 tugasan yang akan membantu anda memahami kerja pengendali perbandingan, pengendali bersyarat dan pengendali logik.

Operasi nombor di Jawa

Operasi yang paling biasa yang dilakukan oleh pengaturcara pada nombor ialah memberikan nilai berangka kepada pembolehubah. Dia, seperti pengendali, =biasa kepada anda:
int a = 1;
int b = 2;
int c = 3;
Terdapat juga operasi aritmetik. Mereka dijalankan menggunakan pengendali aritmetik binari:
Jadual 1. Operator aritmetik binari
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 2Empat pengendali pertama tidak sepatutnya menimbulkan sebarang soalan: semuanya sama seperti dalam matematik. Pengendali terakhir, baki bahagian, juga tidak melakukan sesuatu yang terlalu rumit. Sebagai contoh, jika kita membahagi 24 dengan 7, kita mendapat 3 nombor bulat dan 3 baki. Selebihnya pengendali ini akan kembali:
System.out.println(24 % 7); // prints 3
Berikut adalah contoh dari tapak dokumentasi Oracle rasmi: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 3Program ini akan mengeluarkan yang berikut: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4 / 2 = 2 2 + 8 = 10 10 % 7 = 3 Java membolehkan anda untuk menggabungkan: contohnya, tugasan operator dan operator aritmetik. Mari lihat contoh:
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
Di sini kita telah menentukan pembolehubah xdan memberikannya nilai sifar. Seterusnya, dalam setiap baris kami menetapkan nilai xkepada jumlah nilai semasa pembolehubah xdan satu. Terdapat penjelasan dalam komen untuk setiap baris. Prosedur ini dipanggil membesar atau menambah pembolehubah. Operasi penambahan daripada contoh di atas boleh digantikan dengan operasi yang serupa menggunakan gabungan pengendali:
int x = 0;
x += 1; // x = 0 + 1 => x = 1
x += 1; // x = 1 + 1 => x = 2
x += 1; // x = 2 + 1 => x = 3
Anda boleh menggabungkan operator tugasan dengan mana-mana operator aritmetik:
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;
Mari kita tunjukkan cara contoh terakhir berfungsi:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 4
Selain operator binari, Java mempunyai operator aritmetik unari.
Jadual 2. Operator aritmetik unari:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 4Contoh tambah dan tolak unary:
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);
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 6
Operasi kenaikan dan pengurangan pada asasnya adalah mudah. Dalam kes pertama, pembolehubah dinaikkan sebanyak 1, dalam kes kedua, pembolehubah dikurangkan sebanyak 1. Contoh di bawah:
int x = 9;
x++;
System.out.println(x); // 10

int y = 21;
y--;
System.out.println(y); // 20
Terdapat dua jenis operasi ini - postfix dan prefix. Dalam kes pertama, pengendali ditulis selepas pembolehubah, dalam kes kedua, sebelum pembolehubah. Satu-satunya perbezaan ialah apabila operasi kenaikan atau pengurangan dilakukan. Contoh dan penerangan dalam jadual di bawah. Katakan kita mempunyai pembolehubah:
int a = 2;
Kemudian:
Jadual 3. Pengendali kenaikan-penurunan:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 5Demonstrasi:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 8
Selain aritmetik, terdapat operasi perbandingan (dua nombor). Hasilnya akan sentiasa benar atau salah ( true / false ).
Jadual 4. Operator perbandingan
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 9Contoh:
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);
Demonstrasi:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 10

Operasi Logik di Jawa

Mari kita lihat operasi logik dan jadual kebenaran bagi setiap daripada mereka:
  • operasi penolakan ( NOT);
  • operasi kata hubung, logik DAN ( AND);
  • operasi cerai, logik ATAU ( OR);
  • operasi penambahan modulo, eksklusif ATAU ( XOR).
Pengendali penolakan adalah unary dan terpakai pada satu operan. Semua operasi lain adalah binari. Mari kita pertimbangkan jadual kebenaran operasi ini. Di sini 0 adalah setara dengan false di Jawa, dan 1 adalah setara dengan true .
Jadual 5. Jadual Kebenaran Operator Negasi (TIDAK)
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 7
Jadual 6. Jadual kebenaran operator kata hubung (DAN)
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 8
Jadual 7. Jadual kebenaran operator disjunction (OR)
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 9
Jadual 8. Jadual kebenaran pengendali penambahan modulo (XOR)
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 10Java mempunyai operasi logik yang sama:
  • !— pengendali penafian;
  • &&— operator logik DAN (pendek);
  • ||— operator OR logik (pendek);
  • &— bitwise DAN operator;
  • |— bitwise ATAU pengendali;
  • ^— pengendali eksklusif ATAU bitwise.
Mari kita lihat perbezaan antara operator bitwise dan shorthand sedikit lebih jauh di bawah, sementara mari kita tukar semua jadual kebenaran ke dalam kod Java:
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();
   }
}
Atur cara ini akan memaparkan: BUKAN CONTOH: BUKAN salah = benar BUKAN benar = salah DAN CONTOH: palsu DAN palsu = palsu palsu DAN benar = palsu benar DAN palsu = palsu benar DAN benar = benar ATAU CONTOH: palsu ATAU palsu = palsu palsu ATAU benar = benar benar ATAU salah = benar benar ATAU benar = benar XOR CONTOH: palsu XOR salah = palsu palsu XOR benar = benar benar XOR salah = benar benar XOR benar = palsu Operator logik hanya digunakan untuk booleanpembolehubah. Dalam kes kami, kami menggunakannya secara langsung pada nilai, tetapi anda juga boleh menggunakannya dengan booleanpembolehubah:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 15
Dan kepada booleanungkapan:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 16
Kini, kami mempunyai operator trengkas ( &&, ||) dan operator bitwise yang serupa ( &, |). Apakah perbezaan antara mereka? Pertama, bitwise boleh digunakan pada integer. Kita akan bercakap tentang ini sedikit kemudian. Dan kedua, ada yang disingkatkan, sementara yang lain tidak. Untuk memahami rupa singkatan, mari lihat ungkapan:

false AND x = ?
true OR x = ?
Ini xboleh mengambil sebarang nilai Boolean. Dan secara amnya, mengikut undang-undang logik dan jadual kebenaran, tidak kira sama ada ia x benar atau salah , hasil ungkapan pertama akan menjadi palsu , dan keputusan kedua adalah benar . Tengok.
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 17
Kadangkala hasil ungkapan boleh dikira daripada operan pertama. Inilah yang membezakan operator yang disingkatkan &&dan ||. Dalam ungkapan yang serupa dengan yang diterangkan di atas, mereka tidak menilai nilai operan kedua. Berikut adalah contoh kecil:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 18
Dalam kes pengendali trengkas, bahagian kedua ungkapan tidak dinilai. Tetapi ini berlaku hanya apabila hasil ungkapan sudah jelas daripada operan pertama.

Operasi bitwise di Jawa

Nah, di sini kita sampai ke bahagian yang paling menarik: operasi bitwise. Seperti namanya, ini adalah operasi yang dilakukan pada bit. Tetapi sebelum kita menyelami topik ini, ada baiknya bercakap tentang bidang yang berkaitan.

Perwakilan nombor dalam sistem nombor binari

Nombor, seperti maklumat lain dalam program, disimpan dalam memori komputer dalam kod binari. Kod binari ialah satu set sifar dan satu. Setiap sifar atau satu mewakili unit maklumat yang dipanggil bit.

Menurut Wikipedia:

A bit (daripada digit perduaan bahasa Inggeris - nombor perduaan; juga permainan perkataan: bit Inggeris - piece, particle) ialah unit ukuran jumlah maklumat. 1 bit maklumat ialah simbol atau isyarat yang boleh membawa dua makna: hidup atau mati, ya atau tidak, tinggi atau rendah, dicas atau tidak dicas; dalam sistem binari ialah 1 (satu) atau 0 (sifar).

Apakah jenis data yang digunakan oleh operator bitwise?

Operasi bitwise dalam Java hanya dilakukan pada integer. Integer disimpan dalam memori komputer sebagai satu set bit. Kita boleh mengatakan bahawa komputer menukarkan sebarang maklumat ke dalam sistem nombor binari (satu set bit) dan hanya kemudian berinteraksi dengannya. Tetapi bagaimana sistem nombor binari berfungsi? Dalam sistem nombor perpuluhan kita hanya mempunyai 10 simbol: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Kami menggunakan simbol ini untuk mengira. Selepas 9 datang 10, selepas 19 - 20, selepas 99 - 100, selepas 749 - 750. Iaitu, kami menggunakan gabungan 10 simbol yang tersedia dan boleh menggunakannya untuk mengira "dari sifar hingga makan tengah hari." Dalam sistem nombor binari, bukannya sepuluh simbol, hanya ada dua - 0, 1. Tetapi dengan menggabungkan simbol-simbol ini mengikut prinsip yang sama seperti dalam sistem perpuluhan, kita boleh mengira tanpa had.
Mari kita tunjukkan pengiraan dari 0 hingga 15 dalam perpuluhan dan binari:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 11Seperti yang anda lihat, semuanya tidak begitu rumit. Selain bit, terdapat unit maklumat biasa yang lain - bait , kilobait , megabait , gigabait , dsb. Anda mungkin tahu bahawa terdapat 8 bit dalam 1 bait . Apakah maksudnya? Ini bermakna 8 bit berturut-turut menduduki 1 bait. Berikut ialah contoh bait yang boleh:

00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Bilangan gabungan tidak berulang bit yang mungkin dalam satu bait ialah 256 (2 8 = 256). Tetapi mari kita kembali lebih dekat ke Jawa. Terdapat jenis data integer - byte. Jenis ini boleh mengambil nilai dari -128 hingga 127 dan satu nombor dalam memori komputer mengambil masa tepat 8 bit, atau 1 bait. Satu nombor jenis ini menggunakan tepat 1 bytememori komputer. Dan di sini nama-nama bertepatan bukan secara kebetulan. Seperti yang kita ingat, 1 bait boleh menyimpan 256 nilai yang berbeza. Dan satu nombor jenis byteboleh mengambil 256 nilai yang berbeza (128 negatif, 127 positif dan 1 sifar). Setiap nilai nombor bytemempunyai set unik lapan bit. Ini berlaku bukan sahaja dengan type byte, tetapi dengan semua jenis integral. Jenis bytediberikan sebagai contoh sebagai yang terkecil. Jadual di bawah menunjukkan semua jenis integer Java dan ruang memori yang didudukinya: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 12Pertimbangkan jenis int. Ia boleh menyimpan 2147483648 nilai negatif, 2147483647 nilai positif dan satu sifar. Jumlah:

2147483648 + 2147483647 + 1 = 4294967296.
Jenis ini menggunakan 32 bit dalam memori komputer. Bilangan kombinasi yang mungkin daripada set 32 ​​sifar dan satu ialah:
232 = 4294967296.
Nombor yang sama dengan bilangan nilai yang boleh disimpan oleh jenis itu int. Ini hanyalah demonstrasi hubungan antara julat nilai jenis data dan saiznya (bilangan bit dalam ingatan). Sebarang nombor dari mana-mana jenis dalam Java boleh ditukar kepada binari. Mari lihat betapa mudahnya ini boleh dilakukan menggunakan bahasa Java. Kita akan belajar daripada contoh jenis int. Jenis ini mempunyai kelas pembalut sendiri - Integer. Dan dia mempunyai satu toBinaryString, yang akan melakukan semua kerja untuk kita:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 21
Voila - ia tidak begitu rumit. Tetapi masih, sesuatu perlu dijelaskan. intnombor itu mengambil 32 bit. Tetapi apabila kita mencetak nombor 10 dalam contoh di atas, kita melihat 1010 dalam konsol. Ini kerana sifar pendahuluan tidak dicetak. Jika ia dipaparkan, bukannya 1010 kita akan melihat dalam konsol 000000000000000000000000000001010. Tetapi untuk memudahkan persepsi, semua sifar pendahuluan diabaikan. Tidak begitu sukar sehingga anda bertanya kepada diri sendiri: bagaimana dengan nombor negatif? Ia melihat maklumat hanya dalam sistem binari. Ternyata tanda tolak juga perlu ditulis dalam kod binari. Ini boleh dilakukan menggunakan kod langsung atau pelengkap.

Kod langsung

Kaedah mewakili nombor dalam sistem nombor binari, di mana bit paling ketara (bit paling kiri) diperuntukkan kepada tanda nombor tersebut. Jika nombor itu positif, bit paling kiri ditulis 0, jika negatif - 1.
Mari kita lihat ini menggunakan nombor 8-bit sebagai contoh:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 13Pendekatannya mudah dan, pada dasarnya, boleh difahami. Walau bagaimanapun, ia mempunyai kelemahan: kesukaran dalam melaksanakan operasi matematik. Contohnya, dengan penambahan nombor negatif dan positif. Mereka tidak boleh dilipat melainkan manipulasi tambahan dijalankan.

Kod tambahan

Dengan menggunakan kod tambahan, anda boleh mengelakkan keburukan kod langsung. Terdapat algoritma mudah untuk mendapatkan kod tambahan nombor. Mari cuba dapatkan kod tambahan untuk nombor -5. Mari kita wakili nombor ini menggunakan kod pelengkap dua dalam sistem nombor binari. Langkah 1. Kami memperoleh perwakilan nombor negatif menggunakan kod langsung. Untuk -5 ia akan menjadi 10000101. Langkah 2. Terbalikkan semua digit kecuali digit tanda. Mari gantikan semua sifar dengan satu, dan satu dengan sifar di mana-mana kecuali bit paling kiri.

10000101 => 11111010
Langkah 3. Tambahkan satu pada nilai yang terhasil:

11111010 + 1 = 11111011
sedia. Kami mendapat nilai -5 dalam sistem nombor binari menggunakan kod pelengkap dua. Ini penting untuk memahami bahan berikut, kerana Java menggunakan kod pelengkap dua untuk menyimpan nombor negatif dalam bit.

Jenis operasi bitwise

Sekarang kita telah menangani semua pengenalan, mari kita bercakap tentang operasi bitwise dalam Java. Operasi bitwise dilakukan pada integer dan hasilnya ialah integer. Dalam proses itu, nombor ditukar kepada binari, operasi dilakukan pada setiap bit, dan hasilnya ditukar kembali kepada perpuluhan. Senarai operasi adalah dalam jadual di bawah: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 14Seperti yang telah kita ketahui, nombor boleh diwakili sebagai satu set bit. Operasi bitwise melakukan operasi pada setiap bit perwakilan sedemikian. Mari ambil NOT, AND, OR, XOR. Ingat bahawa kami baru-baru ini melihat jadual kebenaran hanya untuk operan logik. Dalam kes ini, operasi yang sama digunakan pada setiap bit integer.

Operator unary bitwise BUKAN ~

Operator ini menggantikan semua sifar dengan satu, dan semua sifar dengan sifar. Katakan kita mempunyai nombor 10 dalam tatatanda perpuluhan. Dalam perduaan, nombor ini ialah 1010. Jika kita menggunakan operator penolakan bitwise unary pada nombor ini, kita mendapat sesuatu seperti ini: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 15Mari kita lihat rupanya dalam kod Java:
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));
}
Sekarang mari lihat apa yang dipaparkan dalam konsol:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 25
Dalam baris pertama kami mendapat nilai dalam sistem nombor binari tanpa mendahului sifar. Walaupun kita tidak melihat mereka, mereka ada di sana. Ini dibuktikan dengan baris kedua, di mana semua bit telah diubah menjadi yang terbalik. Inilah sebabnya kami melihat begitu banyak unit terkemuka. Ini adalah bekas sifar utama yang diabaikan oleh pengkompil apabila dicetak pada baris pertama. Berikut ialah program kecil yang turut memaparkan sifar utama untuk kejelasan.
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 26

Bitwise DAN operator

Operator ini digunakan untuk dua nombor. Ia melakukan operasi ANDantara bit setiap nombor. Mari kita lihat contoh: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 16Operasi ini dilakukan pada dua nombor. Contoh dalam kod Java:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 28

Bitwise ATAU pengendali

ATAU terpakai kepada dua nombor. Ia melakukan operasi OR antara bit setiap nombor: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 17Sekarang mari kita lihat bagaimana ini akan kelihatan seperti dalam IDEA:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 30

Operasi bitwise, eksklusif ATAU (XOR)

Mari kita lihat contoh yang sama, tetapi dengan operasi baharu: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 18Kod contoh:
Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 32

Anjakan bitwise ke kiri

Operator ini boleh digunakan untuk dua operan, iaitu, dalam operasi x << y, bit nombor xakan beralih ykedudukan ke kiri. Apakah maksudnya? Mari kita lihat contoh operasi.Hasil 10 << 1 Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 19operasi akan menjadi nombor 20 dalam sistem perpuluhan. Seperti yang anda boleh lihat daripada rajah di atas, semua bit dianjak ke kiri sebanyak 1. Semasa operasi ini, nilai bit paling ketara (bit paling kiri) hilang. Dan bit paling tidak ketara (bit paling kanan) diisi dengan sifar. Apa yang anda boleh katakan tentang operasi ini?
  1. Dengan mengalihkan bit nombor Xdengan Nbit ke kiri, kami mendarabkan nombor itu Xdengan 2 N .

    Berikut ialah contoh:

    Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 34
  2. Tetapi! Tanda nombor mungkin berubah jika bit dengan nilai 1 mengambil kedudukan paling kiri.

  3. Jika anda beralih ke kiri selama-lamanya, nombor itu akan bertukar menjadi 0. Mari tunjukkan mata 2 dan 3:

    Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 35

Alih bitwise ke kanan

Operator ini digunakan untuk dua operan. Itu. dalam operasi x >> y, bit nombor xakan beralih ykedudukan ke kanan. Mari kita lihat contoh lain. Marilah kita menganalisis operasi secara skematik 10 >> 1. Mari kita alihkan semua bit kedudukan nombor 10 satu ke kanan: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 20Semasa operasi anjakan, kita kehilangan bit yang betul. Mereka hilang begitu saja. Bit paling kiri adalah tanda nombor (0 adalah positif, 1 adalah negatif). Oleh itu, dalam nilai akhir ia diletakkan sama seperti dalam nombor asal. Contoh dengan nombor negatif: Pengenalan kepada Operator Java: Logik, Aritmetik, Bitwise - 21Bit paling kanan hilang, dan bit paling kiri disalin daripada nombor asal, sebagai tanda kehormat bagi nombor itu. Bagaimana untuk melakukan semua ini dalam IDEA? Pada dasarnya, tidak ada yang rumit, hanya ambil dan gerakkannya:
Знакомство с операторами Java: логические, арифметические, побитовые - 38
Sekarang. Apakah yang anda boleh katakan tentang nombor yang dianjak ke kanan? Mereka boleh dibahagi dengan 2. Setiap kali kita beralih satu bit ke kanan, kita bahagikan nombor asal dengan 2. Jika nombor itu tidak boleh dibahagikan dengan 2, hasilnya akan dibundarkan ke arah tolak infiniti (bawah). Tetapi ini hanya berfungsi jika kita mengalihkan bit dengan tepat 1. Dan jika dengan 2 bit, bahagi dengan 4. Dengan 3 bit, bahagi dengan 8. Dengan 4 bit, bahagi dengan 16. Lihat? Kuasa 2... Apabila kita mengalihkan nombor Xke Nkanan dengan bit, kita membahagikan nombor itu Xdengan 2 kepada kuasa 2 N. Demonstrasi:
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);
    }

   }

}
Apa yang berlaku di sini?
  1. Gelung di mana pembolehubah i ditambah dari 1 hingga 10.

  2. Setiap lelaran kita mengira 2 nilai:
    • Kami menulis ke dalam pembolehubah shiftOperationResulthasil peralihan nombor 2048 dengan i bit ke kanan;

    • devideOperationResultKami menulis hasil pembahagian nombor 2048 dengan 2 kepada kuasa i kepada pembolehubah .

  3. Kami memaparkan dua nilai yang diperoleh secara berpasangan.

Keputusan pelaksanaan program adalah seperti berikut: 1024 - 1024 512 - 512 256 - 256 128 - 128 64 - 64 32 - 32 16 - 16 8 - 8 4 - 4 2 - 2

Anjakan ke kanan bitwise dengan padding sifar

Walaupun anjakan kanan biasa mengekalkan tanda nombor (bit yang paling ketara mengekalkan nilainya), anjakan kanan isian sifar tidak. Dan bit yang paling ketara diisi dengan sifar. Mari lihat bagaimana rupanya: Знакомство с операторами Java: логические, арифметические, побитовые - 22

Keutamaan operasi di Jawa

Seperti matematik, Java mempunyai keutamaan operasi. Jadual di bawah menunjukkan keutamaan (daripada tertinggi hingga terendah) operasi yang kami pertimbangkan. Знакомство с операторами Java: логические, арифметические, побитовые - 23

Contoh penggunaan yang berguna

Menentukan pariti suatu nombor

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

Mencari elemen maksimum dalam tatasusunan

Знакомство с операторами Java: логические, арифметические, побитовые - 25Untuk mencari elemen minimum, cuma tukar tanda perbandingan di tempat yang betul.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION