JavaRush /Java Blog /Random-ID /Pengantar Operator Java: Logika, Aritmatika, Bitwise

Pengantar Operator Java: Logika, Aritmatika, Bitwise

Dipublikasikan di grup Random-ID
Mari kita bicara tentang operasi di Java: numerik, logika, bitwise. Ini merupakan landasan teori yang tentunya diperlukan untuk mempelajari cara memprogram. Pengantar Operator Java: Logika, Aritmatika, Bitwise - 1

Apa saja jenis operator di Java?

Untuk operasi apa pun kita memerlukan setidaknya dua hal:
  • operator;
  • operan.
Contoh operator adalah tanda tambah sederhana dalam operasi penjumlahan dua bilangan. Dan angka-angka yang ditambahkan satu sama lain akan menjadi operan dalam kasus ini. Jadi, dengan bantuan operator, kami melakukan operasi pada satu atau lebih operan. Operator yang melakukan operasi pada dua operan disebut biner. Misalnya menjumlahkan dua angka. Operator yang melakukan operasi pada satu operan disebut unary. Misalnya, minus unary.

Operator Java di Kursus JavaRush

Beberapa kuliah dikhususkan untuk operator Java di tingkat keempat dari pencarian pertama - Sintaks Java. Khususnya, operator kondisional seperti boolean . Kursus ini berisi 22 tugas yang akan membantu Anda memahami cara kerja operator perbandingan, operator kondisional, dan operator logika.

Operasi bilangan di Java

Operasi paling umum yang dilakukan pemrogram pada angka adalah memberikan nilai numerik ke variabel. Dia, seperti operatornya, =akrab bagi Anda:
int a = 1;
int b = 2;
int c = 3;
Ada juga operasi aritmatika. Mereka dilakukan dengan menggunakan operator aritmatika biner:
Tabel 1. Operator aritmatika biner
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 2Empat operator pertama tidak boleh menimbulkan pertanyaan apa pun: semuanya sama seperti dalam matematika. Operator terakhir, sisa pembagian, juga tidak melakukan hal yang terlalu rumit. Misalnya, jika kita membagi 24 dengan 7, kita mendapatkan 3 bilangan bulat dan 3 sisanya. Sisanya yang akan dikembalikan oleh operator ini:
System.out.println(24 % 7); // prints 3
Berikut adalah contoh dari situs dokumentasi resmi Oracle: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 3Program ini akan menghasilkan output sebagai berikut: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4 / 2 = 2 2 + 8 = 10 10 % 7 = 3 Java mengizinkan Anda untuk menggabungkan: misalnya, penugasan operator dan operator aritmatika. Mari kita lihat sebuah 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 mendefinisikan sebuah variabel xdan memberinya nilai nol. Selanjutnya, di setiap baris kita menetapkan nilai xdari jumlah nilai variabel saat ini xdan satu. Ada penjelasan di kolom komentar untuk setiap barisnya. Prosedur ini disebut menumbuhkan atau menambah variabel. Operasi penambahan dari contoh di atas dapat diganti dengan operasi serupa menggunakan kombinasi operator:
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 dapat menggabungkan operator penugasan dengan operator aritmatika apa pun:
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 kerja contoh terakhir:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 4
Selain operator biner, Java memiliki operator aritmatika unary.
Tabel 2. Operator aritmatika unary:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 4Contoh unary plus dan minus:
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);
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 6
Operasi penambahan dan pengurangan pada dasarnya sederhana. Pada kasus pertama variabelnya ditambah 1, pada kasus kedua variabelnya dikurangi 1. Contohnya di bawah ini:
int x = 9;
x++;
System.out.println(x); // 10

int y = 21;
y--;
System.out.println(y); // 20
Ada dua jenis operasi ini - postfix dan awalan. Dalam kasus pertama, operator ditulis setelah variabel, dalam kasus kedua, sebelum variabel. Satu-satunya perbedaan adalah ketika operasi penambahan atau pengurangan dilakukan. Contoh dan penjelasannya pada tabel di bawah ini. Katakanlah kita memiliki variabel:
int a = 2;
Kemudian:
Tabel 3. Operator kenaikan-penurunan:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 5Demonstrasi:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 8
Selain aritmatika, ada operasi perbandingan (dua bilangan). Hasilnya akan selalu benar atau salah ( true / false ).
Tabel 4. Operator perbandingan
Pengantar Operator Java: Logika, Aritmatika, 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:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 10

Operasi Logis di Java

Mari kita lihat operasi logika dan tabel kebenaran masing-masing operasi tersebut:
  • operasi negasi ( NOT);
  • operasi konjungsi, logika AND ( AND);
  • operasi disjungsi, logika OR ( OR);
  • operasi penambahan modulo, eksklusif OR ( XOR).
Operator negasi bersifat unary dan berlaku untuk satu operan. Semua operasi lainnya adalah biner. Mari kita pertimbangkan tabel kebenaran dari operasi ini. Di sini 0 setara dengan false di Java, dan 1 setara dengan true .
Tabel 5. Tabel Kebenaran Operator Negasi (NOT)
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 7
Tabel 6. Tabel kebenaran operator konjungsi (AND)
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 8
Tabel 7. Tabel kebenaran operator disjungsi (OR)
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 9
Tabel 8. Tabel kebenaran operator penjumlahan modulo (XOR)
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 10Java memiliki operasi logis yang sama:
  • !— operator negasi;
  • &&— operator logika AND (pendek);
  • ||— operator logika OR (pendek);
  • &— bitwise DAN operator;
  • |— operator bitwise ATAU;
  • ^— operator OR eksklusif bitwise.
Mari kita lihat perbedaan antara operator bitwise dan steno di bawah ini, sambil mengubah semua tabel kebenaran menjadi kode 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();
   }
}
Program ini akan menampilkan: BUKAN CONTOH: TIDAK salah = benar TIDAK benar = salah DAN CONTOH: salah DAN salah = salah salah DAN benar = salah benar DAN salah = salah benar DAN benar = benar ATAU CONTOH: salah ATAU salah = salah salah ATAU benar = benar benar ATAU salah = benar benar ATAU benar = benar XOR CONTOH: salah XOR salah = salah salah XOR benar = benar benar XOR salah = benar benar XOR benar = salah Operator logika hanya berlaku untuk booleanvariabel. Dalam kasus kami, kami menerapkannya langsung ke nilai, namun Anda juga dapat menggunakannya dengan booleanvariabel:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 15
Dan untuk booleanekspresi:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 16
Sekarang, kita mempunyai operator steno ( &&, ||) dan operator bitwise serupa ( &, |). Apa perbedaan di antara keduanya? Pertama, bitwise dapat diterapkan pada bilangan bulat. Kita akan membicarakannya nanti. Dan kedua, ada yang disingkat, ada pula yang tidak. Untuk memahami seperti apa singkatannya, mari kita lihat ekspresinya:

false AND x = ?
true OR x = ?
Ini xdapat mengambil nilai Boolean apa pun. Dan secara umum, menurut hukum logika dan tabel kebenaran, terlepas dari apakah itu x benar atau salah , hasil ekspresi pertama akan salah , dan hasil ekspresi kedua akan benar . Lihat.
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 17
Terkadang hasil suatu ekspresi dapat dihitung dari operan pertama. Hal inilah yang membedakan operator yang disingkat &&dan ||. Dalam ekspresi serupa dengan yang dijelaskan di atas, mereka tidak mengevaluasi nilai operan kedua. Berikut ini contoh kecilnya:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 18
Dalam kasus operator steno, bagian kedua dari ekspresi tidak dievaluasi. Tapi ini terjadi hanya jika hasil ekspresi sudah terlihat jelas dari operan pertama.

Operasi bitwise di Java

Nah, inilah bagian yang paling menarik: operasi bitwise. Seperti namanya, ini adalah operasi yang dilakukan pada bit. Namun sebelum kita mendalami topik ini, ada baiknya membicarakan bidang terkait.

Representasi bilangan dalam sistem bilangan biner

Angka, seperti informasi lain dalam suatu program, disimpan dalam memori komputer dalam kode biner. Kode biner adalah kumpulan angka nol dan satu. Setiap angka nol atau satu mewakili satuan informasi yang disebut bit.

Menurut Wikipedia:

Bit (dari bahasa Inggris biner digit - bilangan biner; juga permainan kata: bahasa Inggris bit - sepotong, partikel) adalah satuan pengukuran jumlah informasi. 1 bit informasi adalah simbol atau sinyal yang dapat memiliki dua arti: hidup atau mati, ya atau tidak, tinggi atau rendah, bermuatan atau tidak; dalam sistem biner adalah 1 (satu) atau 0 (nol).

Jenis data apa yang digunakan oleh operator bitwise?

Operasi bitwise di Java hanya dilakukan pada bilangan bulat. Integer disimpan dalam memori komputer sebagai sekumpulan bit. Kita dapat mengatakan bahwa komputer mengubah informasi apa pun menjadi sistem bilangan biner (sekumpulan bit) dan baru kemudian berinteraksi dengannya. Tapi bagaimana cara kerja sistem bilangan biner? Dalam sistem bilangan desimal kita hanya mempunyai 10 simbol: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Kita menggunakan simbol-simbol ini untuk menghitung. Setelah 9 muncul 10, setelah 19 - 20, setelah 99 - 100, setelah 749 - 750. Artinya, kita menggunakan kombinasi dari 10 simbol yang tersedia dan dapat menggunakannya untuk menghitung “dari nol hingga makan siang”. Dalam sistem bilangan biner, alih-alih sepuluh simbol, hanya ada dua - 0, 1. Namun dengan menggabungkan simbol-simbol ini menurut prinsip yang sama seperti dalam sistem desimal, kita dapat menghitung tanpa batas.
Mari kita tunjukkan penghitungan dari 0 hingga 15 dalam desimal dan biner:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 11Seperti yang Anda lihat, semuanya tidak terlalu rumit. Selain bit, ada satuan informasi lain yang familiar - byte , kilobyte , megabyte , gigabyte , dll. Anda mungkin tahu bahwa ada 8 bit dalam 1 byte . Apa artinya? Artinya 8 bit berturut-turut menempati 1 byte. Berikut adalah contoh byte:

00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Jumlah kemungkinan kombinasi bit yang tidak berulang dalam satu byte adalah 256 (2 8 = 256). Tapi mari kita kembali lebih dekat ke Jawa. Ada tipe data integer - byte. Tipe ini dapat mengambil nilai dari -128 hingga 127 dan satu angka di memori komputer membutuhkan tepat 8 bit, atau 1 byte. Satu nomor jenis ini memakan tepat 1 bytememori komputer. Dan di sini nama-nama itu bertepatan bukan secara kebetulan. Seperti yang kita ingat, 1 byte dapat menyimpan 256 nilai berbeda. Dan satu jenis angka bytedapat memiliki 256 nilai berbeda (128 negatif, 127 positif, dan 1 nol). Setiap nilai angka bytememiliki kumpulan delapan bit unik. Hal ini terjadi tidak hanya pada type byte, tetapi juga pada semua tipe integral. Tipenya bytediberikan sebagai contoh sebagai yang terkecil. Tabel di bawah ini menunjukkan semua tipe integer Java dan ruang memori yang ditempatinya: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 12Pertimbangkan tipenya int. Itu dapat menyimpan 2147483648 nilai negatif, 2147483647 nilai positif, dan satu nol. Total:

2147483648 + 2147483647 + 1 = 4294967296.
Tipe ini memakan 32 bit dalam memori komputer. Banyaknya kemungkinan kombinasi dari 32 angka nol dan satu adalah:
232 = 4294967296.
Angka yang sama dengan jumlah nilai yang dapat ditampung oleh tipe tersebut int. Ini hanyalah demonstrasi hubungan antara rentang nilai suatu tipe data dan ukurannya (jumlah bit dalam memori). Sejumlah jenis apa pun di Java dapat dikonversi ke biner. Mari kita lihat betapa mudahnya hal ini dilakukan dengan menggunakan bahasa Java. Kita akan belajar dari contoh type int. Tipe ini memiliki kelas pembungkusnya sendiri - Integer. Dan dia punya satu toBinaryString, yang akan melakukan semua pekerjaan untuk kita:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 21
Voila - tidak terlalu rumit. Tapi tetap saja, ada sesuatu yang perlu diklarifikasi. intjumlahnya membutuhkan 32 bit. Namun ketika kita mencetak angka 10 pada contoh di atas, kita melihat di konsol 1010. Hal ini karena angka nol di depan tidak dicetak. Jika ditampilkan, bukannya 1010 kita akan melihat 00000000000000000000000000.0001010101010101010 Di konsol. Tetapi untuk kemudahan persepsi, semua nol terkemuka dihilangkan. Tidak terlalu sulit sampai Anda bertanya pada diri sendiri: bagaimana dengan bilangan negatif? Ia menerima informasi hanya dalam sistem biner. Ternyata tanda minusnya juga perlu ditulis dalam kode biner. Hal ini dapat dilakukan dengan menggunakan kode langsung atau komplementer.

Kode langsung

Suatu metode untuk merepresentasikan bilangan dalam sistem bilangan biner, di mana bit paling signifikan (bit paling kiri) dialokasikan ke tanda bilangan tersebut. Jika bilangan positif maka bit paling kiri ditulis 0, jika negatif - 1.
Mari kita lihat ini menggunakan bilangan 8-bit sebagai contoh:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 13Pendekatannya sederhana dan, pada prinsipnya, dapat dimengerti. Namun, ada kekurangannya: kesulitan dalam melakukan operasi matematika. Misalnya dengan penjumlahan bilangan negatif dan positif. Mereka tidak dapat dilipat kecuali dilakukan manipulasi tambahan.

Kode tambahan

Dengan menggunakan kode tambahan, Anda dapat menghindari kelemahan kode langsung. Ada algoritma sederhana untuk mendapatkan kode tambahan suatu nomor. Mari kita coba untuk mendapatkan kode tambahan untuk nomor -5. Mari kita nyatakan bilangan ini menggunakan kode komplemen dua dalam sistem bilangan biner. Langkah 1. Kita memperoleh representasi bilangan negatif menggunakan kode langsung. Untuk -5 akan menjadi 10000101. Langkah 2. Balikkan semua digit kecuali digit tanda. Mari kita ganti semua angka nol dengan angka satu, dan angka satu dengan angka nol di mana pun kecuali bit paling kiri.

10000101 => 11111010
Langkah 3. Tambahkan satu ke nilai yang dihasilkan:

11111010 + 1 = 11111011
Siap. Kami mendapat nilai -5 dalam sistem bilangan biner menggunakan kode komplemen dua. Hal ini penting untuk memahami materi berikut, karena Java menggunakan kode komplemen dua untuk menyimpan bilangan negatif dalam bit.

Jenis operasi bitwise

Sekarang kita telah membahas semua perkenalannya, mari kita bicara tentang operasi bitwise di Java. Operasi bitwise dilakukan pada bilangan bulat dan hasilnya adalah bilangan bulat. Dalam prosesnya, bilangan diubah menjadi biner, operasi dilakukan pada setiap bit, dan hasilnya diubah kembali menjadi desimal. Daftar operasinya ada pada tabel di bawah ini: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 14Seperti yang telah kita ketahui, angka dapat direpresentasikan sebagai sekumpulan bit. Operasi bitwise melakukan operasi pada setiap bit representasi tersebut. Mari kita ambil NOT, AND, OR, XOR. Ingatlah bahwa baru-baru ini kita melihat tabel kebenaran hanya untuk operan logis. Dalam hal ini, operasi yang sama diterapkan pada setiap bit bilangan bulat.

Operator unary bitwise BUKAN ~

Operator ini mengganti semua angka nol dengan angka satu, dan semua angka nol dengan angka nol. Misalkan kita mempunyai angka 10 dalam notasi desimal. Dalam biner, angka ini adalah 1010. Jika kita menerapkan operator negasi bitwise unary ke angka ini, kita mendapatkan hasil seperti ini: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 15Mari kita lihat tampilannya dalam kode 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 kita lihat apa yang ditampilkan di konsol:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 25
Di baris pertama kita mendapatkan nilai dalam sistem bilangan biner tanpa angka nol di depannya. Meskipun kita tidak melihatnya, mereka ada di sana. Hal ini dibuktikan dengan baris kedua, di mana semua bit diubah menjadi bit terbalik. Inilah sebabnya kami melihat begitu banyak unit terkemuka. Ini adalah angka nol di awal yang diabaikan oleh kompiler saat dicetak pada baris pertama. Berikut adalah program kecil yang juga menampilkan angka nol di depan untuk kejelasan.
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 26

Bitwise DAN operator

Operator ini berlaku untuk dua nomor. Ia melakukan operasi ANDantara bit-bit dari setiap nomor. Mari kita lihat contohnya: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 16Operasi ini dilakukan pada dua angka. Contoh dalam kode Java:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 28

Operator ATAU bitwise

OR berlaku untuk dua angka. Ia melakukan operasi OR di antara bit-bit setiap angka: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 17Sekarang mari kita lihat seperti apa tampilannya di IDEA:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 30

Operasi bitwise, OR eksklusif (XOR)

Mari kita lihat contoh yang sama, tetapi dengan operasi baru: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 18Kode contoh:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 32

Pergeseran sedikit ke kiri

Operator ini berlaku untuk dua operan, yaitu dalam operasinya x << ybit-bit bilangan xakan bergeser yposisinya ke kiri. Apa artinya? Mari kita lihat contoh operasinya, 10 << 1 Pengantar Operator Java: Logika, Aritmatika, Bitwise - 19Hasil operasinya adalah angka 20 dalam sistem desimal. Seperti yang Anda lihat dari diagram di atas, semua bit digeser ke kiri sebesar 1. Selama operasi ini, nilai bit paling signifikan (bit paling kiri) hilang. Dan bit paling tidak signifikan (bit paling kanan) diisi dengan nol. Apa yang bisa Anda katakan tentang operasi ini?
  1. Dengan menggeser bit-bit suatu bilangan Xdemi Nbit ke kiri, kita mengalikan bilangan tersebut Xdengan 2 N .

    Berikut ini contohnya:

    Pengantar Operator Java: Logika, Aritmatika, Bitwise - 34
  2. Tetapi! Tanda bilangan dapat berubah jika bit bernilai 1 berada pada posisi paling kiri.

  3. Jika Anda menggeser ke kiri tanpa batas waktu, angka tersebut akan berubah menjadi 0. Mari kita tunjukkan poin 2 dan 3:

    Pengantar Operator Java: Logika, Aritmatika, Bitwise - 35

Pergeseran sedikit ke kanan

Operator ini berlaku untuk dua operan. Itu. dalam pengoperasiannya x >> y, bit-bit angka xakan bergeser yposisinya ke kanan. Mari kita lihat contoh lainnya. Mari kita menganalisis operasi secara skematis 10 >> 1. Mari kita geser semua bit angka 10 satu posisi ke kanan: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 20Selama operasi shift, kita kehilangan bit yang tepat. Mereka menghilang begitu saja. Bit paling kiri adalah tanda bilangan (0 positif, 1 negatif). Oleh karena itu, pada nilai akhir ditempatkan sama dengan bilangan aslinya. Contoh dengan bilangan negatif: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 21Bit paling kanan hilang, dan bit paling kiri disalin dari bilangan aslinya, sebagai tanda kehormatan dari bilangan tersebut. Bagaimana melakukan semua ini di IDEA? Prinsipnya tidak ada yang ribet, ambil saja dan pindahkan:
Pengantar Operator Java: Logika, Aritmatika, Bitwise - 38
Sekarang. Apa yang dapat kamu katakan tentang angka-angka yang digeser ke kanan? Bilangan tersebut habis dibagi 2. Setiap kali kita menggeser satu bit ke kanan, bilangan asli kita bagi dengan 2. Jika bilangan tersebut tidak habis dibagi 2, maka hasilnya akan dibulatkan ke arah minus tak terhingga (bawah). Tapi ini hanya berhasil jika kita menggeser bitnya tepat 1. Dan jika dengan 2 bit, bagi dengan 4. Dengan 3 bit, bagi dengan 8. Dengan 4 bit, bagi dengan 16. Lihat? Pangkat 2... Saat kita menggeser suatu bilangan Xke Nkanan sedikit demi sedikit, kita membagi bilangan tersebut Xdengan 2 pangkat 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 terjadi di sini?
  1. Sebuah loop di mana variabel i bertambah dari 1 menjadi 10.

  2. Setiap iterasi kami menghitung 2 nilai:
    • Kita tuliskan ke dalam variabel shiftOperationResulthasil pergeseran bilangan 2048 sebanyak i bit ke kanan;

    • devideOperationResultHasil pembagian angka 2048 dengan 2 pangkat i kita tuliskan ke dalam variabel .

  3. Kami menampilkan dua nilai yang diperoleh secara berpasangan.

Hasil eksekusi program sebagai berikut : 1024 - 1024 512 - 512 256 - 256 128 - 128 64 - 64 32 - 32 16 - 16 8 - 8 4 - 4 2 - 2

Pergeseran kanan bitwise dengan bantalan nol

Meskipun pergeseran ke kanan normal mempertahankan tanda angka (bit paling signifikan mempertahankan nilainya), pergeseran ke kanan tanpa pengisian tidak. Dan bit paling signifikan diisi dengan nol. Mari kita lihat seperti apa: Pengantar Operator Java: Logika, Aritmatika, Bitwise - 22

Prioritas operasi di Jawa

Seperti halnya matematika, Java memiliki prioritas pada operasi. Tabel di bawah ini menunjukkan prioritas (dari yang tertinggi hingga terendah) dari operasi yang kami pertimbangkan. Pengantar Operator Java: Logika, Aritmatika, Bitwise - 23

Contoh penggunaan yang berguna

Menentukan paritas suatu bilangan

Pengantar Operator Java: Logika, Aritmatika, Bitwise - 24

Menemukan elemen maksimum dalam array

Pengantar Operator Java: Logika, Aritmatika, Bitwise - 25Untuk mencari elemen minimum, cukup ubah tanda perbandingan di tempat yang tepat.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION