OPERASI RELASIONAL DAN LOGIKA Matakuliah Tahun Versi : T0974 / Algoritma dan Metode Object Oriented Programming I : 2008 : 1/0 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu: • Melakukan operasi relasional/komparasi • Melakukan operasi logika • Melakukan operasi bitwise Bina Nusantara Outline Materi • • • • • • Operasi Relasional/Komparasi Operator Relasional/Komparasi Operasi Logika/Boolean Operator Logika/Boolean Tabel Kebenaran Bitwise Operation Bina Nusantara Operasi Relasional • Operasi relasional = operasi komparasi • Membandingkan 2 nilai • Menggunakan 6 operator relasional/komparasi • Hasil perbandingan berupa nilai Boolean: true atau false • Nilai yang dibandingkan berupa: angka, huruf (ASCII), atau kata (dengan bantuan String) Bina Nusantara Operator Perbandingan Operator Deskripsi < less than Bina Nusantara Contoh 1<2 Hasil true <= > >= less than or equal to greater than greater than or equal to 1 <= 2 1>2 1 >= 2 true false false == equal to 1 == 2 false != not equal to 1 != 2 true Operator Perbandingan • Karakter dapat dibandingkan dengan mengacu pada nilai ASCII-nya – Contoh: karakter ‘a’ lebih besar daripada ‘A’ karena nilai ASCII ‘a’ (97) lebih besar daripada nilai ASCII ‘A’ (65) • Kata dapat dibandingkan dengan bantuan String – Akan dibahas lebih lanjut di materi Struktur Kendali Seleksi • Operator komparasi (==) berbeda dengan operator assignment (=) X = 14 memasukan nilai 14 ke X X == 14 membandingkan apakah X sama dengan 14 Bina Nusantara Operator Perbandingan Bina Nusantara Operasi Logika/Boolean • • • • Operasi logika = operasi Boolean Eksekusi 1 atau 2 nilai logika Menggunakan 4 operator logika/Boolean Hasil perbandingan berupa nilai Boolean: true atau false • Mengacu pada tabel kebenaran (truth table) Bina Nusantara Operator Boolean Operator Nama Description ! && not and logical negation logical conjunction || or logical disjunction ^ Bina Nusantara exclusive or logical exclusion Tabel Kebenaran NOT (!) p !p Contoh true false !(1>2) is true, because (1>2) is false false true !(1>0) is false, because (1>0) is true • Operator not (!) membalikkan (negasi) nilai • true false dan talse true Bina Nusantara Tabel Kebenaran AND (&&) p1 p2 p1 && p2 Contoh false false false (2>3) && (5>5) is false Because both (2>3) and (5>5) are false false true false (2>3) && (6>5) is false Because (2>3) is false true false false (6>5) && (2>3) is false Because (2>3) is false true true true (3>2) && (5>=5) is true Because both (3>2) and (5>=5) are true • Operator AND (&&) bernilai true jika kedua kondisi operand-nya true • Jika salah satu operand-nya false, maka AND akan bernilai false Bina Nusantara Tabel Kebenaran OR (||) p1 p2 p1 || p2 Contoh false false false (2>3) || (5>5) is false Because both (2>3) and (5>5) are false false true true (2>3) || (6>5) is true Because (6>5) is true true false true (6>5) || (2>3) is true Because (6>5) is true true true (3>2) || (5>=5) is true Because both (3>2) and (5>=5) are true true • Operator OR (||) bernilai true jika salah satu kondisi operand-nya true • Jika kedua operand-nya false, maka OR akan bernilai false Bina Nusantara Tabel Kebenaran XOR (^) p1 p2 p1 ^ p2 Contoh false false false (2>3) ^ (5>5) is false Because both (2>3) and (5>5) are false false true true (2>3) ^ (6>5) is true Because (2>3) is false and (6>5) is true true false true (6>5) ^ (2>3) is true Because (6>5) is true and (2>3) is false true false (3>2) ^ (5>=5) is true Because both (3>2) and (5>=5) are true true • Operator XOR (^) bernilai true jika kedua kondisi operand-nya bernilai berbeda • Jika kedua operand-nya bernilai sama, maka XOR akan bernilai false Bina Nusantara Tabel Kebenaran: Demo Bina Nusantara Tabel Kebenaran: Demo Bina Nusantara Tabel Kebenaran: Tahun Kabisat Bina Nusantara Did You Know? • Saat evaluasi p1&&p2, Java mengevaluasi p1 terlebih dahulu – Jika p1 bernilai true, maka Java mengevaluasi p2 – Jika p1 bernilai false, maka Java tidak mengevaluasi p2 • Saat evaluasi p1||p2, Java mengevaluasi p1 terlebih dahulu – Jika p1 bernilai true, maka Java tidak mengevaluasi p2 – Jika p1 bernilai false, maka Java mengevaluasi p2 • Operator && dan || conditional atau short-circuit OR operator Bina Nusantara Advanced Learning • • • • Bit: satuan terkecil dalam data 1 byte = 8 bits 1 bit bernilai 0 dan 1 Java menyediakan operator untuk bitwise atau bit shift • Bitwise/bit shift jarang digunakan • Contoh bit: 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 Bina Nusantara 0000 1000 8 0001 0000 16 0010 0000 32 0100 1101 77 1111 1111 255 Advanced Learning • Nilai bit sama dengan boolean: – 1 : true – 0 : false • Hasil operasi sama dengan operasi logika & && (AND) | || (OR) ^ ^ (XOR) ~ ! (NOT/NEGATE) • Operator tambahan: << : shift left (unsigned) >> : shift right (signed) >>> : shift right (unsigned) Bina Nusantara Advanced Learning Operator Nama Contoh Deskripsi & AND 1010 1110 & 1001 0010 Hasil: 1000 0010 Jika kedua bit = 1, maka menghasilkan | OR 1010 1110 | 1001 0010 Hasil: 1011 1110 Jika salah satu bit = 1, maka ^ XOR 1010 1110 ^ 1001 0010 Hasil: 0011 1110 Jika kedua bit berbeda nilai maka ~ NEGATE ~1010 1110 Hasil: 0101 0001 Jika bit = 1 0 Jika bit = 0 1 << LEFT SHIFT 1010 1110 << 2 Hasil: 1011 1000 Geser 2 bit ke kiri, dan isi dengan nilai >> RIGHT SHIFT (SIGNED) 1010 1110 >> 2 Hasil: 1110 1011 0010 1110 >> 2 Hasil: 0000 1011 Geser 2 bit ke kanan, dan isi dengan di kiri RIGHT 1010 1110 >>> 2 SHIFT Hasil: 0010 1011 (UNSIGNED) Geser 2 bit ke kanan, dan isi dengan >>> Bina Nusantara Advanced Learning • Shorthand pada bitwise: &=, |=, ^=, <<=, >>=, >>>= • Bitwise hanya dapat dilakukan pada tipe data bilangan bulat: byte, short, int, dan long • Bitwise pada tipe data char akan dikonversi ke int (mengacu ke nilai ASCII) Bina Nusantara Advanced Learning Bina Nusantara Advanced Learning Bina Nusantara Referensi • Introduction to Java Programming. 6ed. Liang. 2007. p94-98, p1279 • Dasar Pemrograman Java 2. Abdul Kadir. 2004. p76-83 • The Complete Reference Java. 5ed. Herbert Schildt. 2005. p62-76 • Java 2 Weekend Crash Course. Julio Sanchez. 2002. p85-96 • Bitwise: – – – – Bina Nusantara http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html http://www.sap-img.com/java/java-bitwise-logical-operators.htm http://www.leepoint.net/notes-java/data/expressions/bitops.html http://www.javabeginner.com/java-operators.htm