OPERATOR BITWISE
Operator Bitwise itu Operasi matematika dengan mengoprasikan nilai dalam bilangan biner 0 dan 1, Penggunaan operasi bitwise lebih banyak pada operasi logika, Operator bitwise ini bekerja bit demi bitOperator | Detail | Contoh |
---|---|---|
<< | Geser bit Ke Kiri | m << n |
>> | Geser bit Ke Kanan | m >> n |
& | Bitwise Dan / And | m & n |
| | Bitwise Atau / Or (OR Inklusif) | m | n |
~ | Bitwise Not / Bukan | ~m |
^ | Bitwise Xor (OR Eksklusif) | m ^ n |
Seluruh operator bitwise hanya bisa dikenakan pada operand bertipe data int atau char.
1. Shift Left " << "
Menggeser sejumlah bit ke kiri / melakukan perpindahan arah bit ke kiri atau menggeser nilai biner kearah kiri dan digit yang paling kanan akan diisi 0. untuk lebih jelasnya kalian praktekan aja bagaimana hasil dari kode di bawah ini :
#include <iostream>
using namespace std;
int main()
{
int a=45;
cout << a << " << 2 = " << (a<<2) << endl;
return 0;
}
Outputnya :
45 << 2 = 180
Contoh Lainya shift left
45 << 2 = 180
Contoh Lainya shift left
#include <iostream>
using namespace std;
int main()
{
int a=60;
cout << a << " << 3 = " << (a<<3) << endl;
return 0;
}
Outputnya :
60 << 3 = 480
60 << 3 = 480
Kenapa hasilnya segitu ?
Contoh coding bitwise No 1
- Perhitungan dari bitwise ini menggunakan biner, jadi kita harus mengkonvert angka dulu ke biner, caranya anda bisa langsung ke website disini Atau anda bisa menghitungnya manual :a = 45 = 101101
Berikut cara membuatnya menjadi biner :
Pembagian | Hasil | Sisa Pembagian |
---|---|---|
45 / 2 | 22 | 1 |
22 / 2 | 11 | 0 |
11 / 2 | 5 | 1 |
5 / 2 | 2 | 1 |
2 / 2 | 1 | 0 |
1 / 2 | 0 | 1 |
- lalu geser bitnya kearah kiri dan yang paling kanan itu diisi 0, karena kita menggeser bit 3 maka isikan 0 pada yang paling kanan, menjadi seperti ini.
a = | 1 | 0 | 1 | 1 | 0 | 1 | ||
Hasil = | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
Contoh coding bitwise No 2
- Perhitungan dari bitwise ini menggunakan biner, jadi kita harus mengkonvert angka dulu ke biner, caranya anda bisa langsung ke website disini Atau anda bisa menghitungnya manual :a = 60 = 111100
Berikut cara membuatnya menjadi biner :
Pembagian | Hasil | Sisa Pembagian |
---|---|---|
60/2 | 30 | 0 |
30/2 | 15 | 0 |
15/2 | 7 | 1 |
7/2 | 3 | 1 |
3/2 | 1 | 1 |
1/2 | 0 | 1 |
a = | 1 | 1 | 1 | 1 | 0 | 0 | |||
Hasil = | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
Jadi kita mengisikan 0 dua kali pada biner yang paling kanan, jadi 111100000 = 480
2. Shift Right " >>"
Menggeser sejumlah bit ke kanan / melakukan perpindahan arah bit ke kanan, sama seperti Shift Left cuman kebalikanya, sekarang tinggal bandingin bagaimana perubahan perbedaan shift right dan left dengan kode di bawah ini :
#include <iostream>
using namespace std;
int main()
{
int a=45;
cout << a << " >> 2 = " << (a>>2) << endl;
return 0;
}
Outputnya :
45 >> 2 = 11
Jadi binernya a = 45 = 101101
Untuk menghitungnya dengan menggeser nilai biner kearah kanan serta menghapus nilai biner yang paling kanan dan yang paling kiri dari hasil pergeseran tidak akan diisi nilai apapun berbeda layaknya pada shift left yang diisi 0.
Karena kita menggeser ke kanannya 2 bit maka hilangkan biner yang sebelah kanan, jadi 1011 = 11
Karena operator and or dan xor adalah operator untuk membandingkan 2 operand dengan cara menggunakan bilangan binner sebagai perbandingan, binner adalah bilangan 0 dan 1. nah operator ini akan mentranslate bilangan bulat ke binner dan membandingkannya dengan operand lainya, itu yang dimaksud 2 operand.
45 >> 2 = 11
Jadi binernya a = 45 = 101101
Untuk menghitungnya dengan menggeser nilai biner kearah kanan serta menghapus nilai biner yang paling kanan dan yang paling kiri dari hasil pergeseran tidak akan diisi nilai apapun berbeda layaknya pada shift left yang diisi 0.
a = | 1 | 0 | 1 | 1 | 0 | 1 |
Hasil = | 1 | 0 | 1 | 1 |
3. Operator And " & "
Pasti tidak asing lagi dengan operator logika sebenarnya di SMA di ajarkan logika seperti ini dalam pelajaran matematika, tetapi sedikit berbeda, jika di SMA pasti di ajarkan tabel kebenaran yaitu benar dan salah kalo disini 0 sebagai salah dan 1 benar. lihat pada tabel di bawah iniKarena operator and or dan xor adalah operator untuk membandingkan 2 operand dengan cara menggunakan bilangan binner sebagai perbandingan, binner adalah bilangan 0 dan 1. nah operator ini akan mentranslate bilangan bulat ke binner dan membandingkannya dengan operand lainya, itu yang dimaksud 2 operand.
AND
kalian tinggal lihat pada gambar di atas untuk membandingkannya ada pada true dan false (benar dan salah). Setelah operator ini di tugaskan melakukan perbandingan dengan cara yang di atas itu, maka hasil perbandingan tersebut akan di translate ke bilangan bulat kembali.
#include <iostream>
using namespace std;
int main()
{
int a = 0;
int b = 1;
cout << "Jadi " << a << " & " << a << " Hasilnya adalah : " << (a & a) << endl;
cout << "Jadi " << a << " & " << b << " Hasilnya adalah : " << (a & b) << endl;
cout << "Jadi " << b << " & " << a << " Hasilnya adalah : " << (b & a) << endl;
cout << "Jadi " << b << " & " << b << " Hasilnya adalah : " << (b & b) << endl;
return 0;
}
Output :
Jadi 0 & 0 Hasilnya adalah : 0
Jadi 0 & 1 Hasilnya adalah : 0
Jadi 1 & 0 Hasilnya adalah : 0
Jadi 1 & 1 Hasilnya adalah : 1
Nah jika nilai a dan b nya bukan 0 dan 1 misalkan bilangan bulat seperti 3, 23, 534 dst, bilangan 1 s/d 0, maka akan di translate ke biner dan ada operasi hitung binner dan biner. nah kalo misalkan di bagian ini ada rumusnya juga untuk menghitung and dalam bilangan binner.
Cara menghitung bitwise AND :
Misalkan contoh sederhana seperti berikut ini
20 & 18 Hasilnya : 16
Jadikan 20 dan 18 itu biner dahulu
20 = 10100
18 = 10010
----------
10000
sesuaikan binernya dan hitung sesuai dengan tabel kebenaran diatas, jika
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
0 & 0 = 0
1 & 1 = 1
maka hasil binernya 10000 jadikan desimal hasilnya 16
Nah jika nilai a dan b nya bukan 0 dan 1 misalkan bilangan bulat seperti 3, 23, 534 dst, bilangan 1 s/d 0, maka akan di translate ke biner dan ada operasi hitung binner dan biner. nah kalo misalkan di bagian ini ada rumusnya juga untuk menghitung and dalam bilangan binner.
Cara menghitung bitwise AND :
Misalkan contoh sederhana seperti berikut ini
#include <iostream>
using namespace std;
int main()
{
int a = 20, b = 18;
cout << a << " & " << b << " Hasilnya : " << (a&b) << endl;
}
Output : 20 & 18 Hasilnya : 16
Jadikan 20 dan 18 itu biner dahulu
20 = 10100
18 = 10010
----------
10000
sesuaikan binernya dan hitung sesuai dengan tabel kebenaran diatas, jika
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
0 & 0 = 0
1 & 1 = 1
maka hasil binernya 10000 jadikan desimal hasilnya 16
4. Operator OR " | "
OR
Begitupun dengan OR sama saja dengan operator And membandingkan 2 operand, cuman akan berbeda jika kita melihat hasil perbandingannya, lihat tabel di atas. Setelah itu praktekan dalam kodingnya.
OR : bernilai 1 jika salah satu dari kedua bit yang dibandingkan terdapat 1 serta kedua bit sama sama bernilai 1, tetapi bernilai 0 jika kedua bit adalah 0
Cara menghitung bitwise OR :
Misalkan contoh sederhana seperti berikut ini
#include <iostream>
using namespace std;
int main()
{
int a = 20, b = 18;
cout << a << " | " << b << " Hasilnya : " << (a|b) << endl;
}
Output :
20 | 18 Hasilnya : 22
Jadikan 20 dan 18 itu biner dahulu
20 = 10100
18 = 10010
----------
10110
sesuaikan binernya dan hitung sesuai dengan tabel kebenaran diatas, jika
0 & 0 = 0
0 & 1 = 1
1 & 0 = 1
0 & 0 = 0
1 & 1 = 1
maka hasil binernya 10110 jadikan desimal hasilnya 22
5. Operator XOR " ^ "
XOR
Begitupun dengan XOR sama saja dengan operator And dan Or membandingkan 2 operand, cuman akan berbeda jika kita melihat hasil perbandingannya, lihat tabel di atas untuk perbandingannya. Setelah itu praktekan dalam codingnya.
XOR : bernilai 0 jika kedua biner bernilai sama (misal 1 ^ 1 atau 0 ^ 0), tetapi bernilai 1 jika kedua biner berbeda (misalkan 1 ^ 0 atau 0 ^ 1)
Cara menghitung bitwise OR :
Misalkan contoh sederhana seperti berikut ini
#include <iostream>
using namespace std;
int main()
{
int a = 20, b = 18;
cout << a << " ^ " << b << " Hasilnya : " << (a^b) << endl;
}
Output :
20 ^ 18 Hasilnya : 6
Jadikan 20 dan 18 itu biner dahulu
20 = 10100
18 = 10010
----------
00110
sesuaikan binernya dan hitung sesuai dengan tabel kebenaran diatas, jika
0 & 0 = 0
0 & 1 = 1
1 & 0 = 1
0 & 0 = 0
1 & 1 = 0
maka hasil binernya 00110 jadikan desimal hasilnya 6
6. Operator NOT " ~ "
Berikut bentuk tabel kebenaran dari not~a = b
~b = a
Kalo operator ini berbeda,Operator Not adalah operator yang mengembalikan nilai dalam bentuk bilangan biner, sama seperti lainya mentranslate bilangan bulat ke binner. jika biner tersebut (benar/true/1) maka hasil akan di balikan menjadi (salah/false/0), begitupun sebaliknya jika hasilnya (salah/false/0) maka hasil aslinya (benar/true/1). setelah itu akan di bilangan bulatkan kembali nilainya. Jadi dalam operator Bitwise identik perhitungannya dengan bilangan binner.
Cara menghitung bitwise NOT :
Misalkan contoh sederhana seperti berikut ini
#include <iostream>
using namespace std;
int main()
{
int a = 20;
cout << "~" << a << " Hasilnya : " << (~a) << endl;
}
Output :
~20 Hasilnya : -21
Jadikan 20 dan 18 itu biner dahulu
20 = 10100
----------
01011
sesuaikan binernya dan hitung sesuai dengan tabel kebenaran diatas, jika
~0 = 1
~0 = 1
~1 = 0
~0 = 1
~1 = 0
~0 = 1
~1 = 0
~0 = 1
~1 = 0
maka hasil binernya 01011 jadikan desimal hasilnya 11, kenapa hasilnya berbeda ?
karena bit 01011 menggunakan 5 bit, sedangkan bahasa pemrgraman menghitungnya menggunakan 32 bit, jadi kita jadikan dulu menjadi 32 bit.
karena bit 01011 menggunakan 5 bit, sedangkan bahasa pemrgraman menghitungnya menggunakan 32 bit, jadi kita jadikan dulu menjadi 32 bit.
OPERATOR LOGIKA
Operator logika adalah operator yang mengarah pada ungkapan untuk memcahkan suatu masalah, tidak seperti bitwise pada tiap bit nya. operator logika ini biasanya di gunakan untuk membandingkan 2 operand kondisi yang biasa dikenal dengan istilah boolean (true/false) .untuk menghubungkan 2 atau lebih ungkapan yang berkondisi.
Operator AND (&&) hanya akan menghasilan nilai 1 (benar) jika semua operand bernilai 1 (benar)
Operator OR ( | | ) menghasilkan nilai salah (0) jika semua operan bernilai 0 (salah)
Operator NOT (!) merupakan kebalikan dari nilai yang terkandung didalamnya.
Operator | Deskripsi | Contoh Bentuk |
---|---|---|
&& | Logika And | x && y |
|| | Logika Or | x || y |
! | Logika Not | !x |
Biasanya operator logika ini sering digunakan pada operasi pengkondisian seperti if else else if pada bahasa pemrograman C++.
Contoh programnya seperti ...
#include <iostream>
using namespace std;
int main()
{
int a = 0;
int b = 1;
cout << "Jadi " << a << " && " << a << " Hasilnya adalah : " << (a && a) << endl;
cout << "Jadi " << a << " && " << b << " Hasilnya adalah : " << (a && b) << endl;
cout << "Jadi " << b << " && " << a << " Hasilnya adalah : " << (b && a) << endl;
cout << "Jadi " << b << " && " << b << " Hasilnya adalah : " << (b && b) << endl << endl;
cout << "Jadi " << a << " || " << a << " Hasilnya adalah : " << (a || a) << endl;
cout << "Jadi " << a << " || " << b << " Hasilnya adalah : " << (a || b) << endl;
cout << "Jadi " << b << " || " << a << " Hasilnya adalah : " << (b || a) << endl;
cout << "Jadi " << b << " || " << b << " Hasilnya adalah : " << (b || b) << endl << endl;;
cout << "Jadi " << a << " Hasilnya adalah : " << (!a) << endl;
cout << "Jadi " << b << " Hasilnya adalah : " << (!b) << endl;
return 0;
}
Outputnya :
Jadi 0 && 0 Hasilnya adalah : 0
Jadi 0 && 1 Hasilnya adalah : 0
Jadi 1 && 0 Hasilnya adalah : 0
Jadi 1 && 1 Hasilnya adalah : 1
Jadi 0 || 0 Hasilnya adalah : 0
Jadi 0 || 1 Hasilnya adalah : 1
Jadi 1 || 0 Hasilnya adalah : 1
Jadi 1 || 1 Hasilnya adalah : 1
Jadi 0 Hasilnya adalah : 1
Jadi 1 Hasilnya adalah : 0
1. Operator AND
true || true = truetrue || false = false
false || true = false
false || false = false
untuk lebih jelasnya program di atas hasilnya sama dengan operator bitwise, tetapi jika di implementasikan dalam ungkapan pengkondisian maka kalian akan tau perbedaanya.
Nah nilai awal itu kan nilai a dan b sama, trus nilai c dan d juga sama. if else itu adalah pengkondisian, jadi jika dalam kode if (a == b && c==d) nilai nya benar maka jalankan kode yang ada di dalam if. itu makanya pas kompile pertama yang keluar adalah "Iya, a dan b nilainya sama && c dan d nilai nya sama" karena emang di if (a == b && c==d) itu benar.
logikanya gini :
- a == b artinya, apakah nilai a sama dengan b ?? jawabanya True karena a=10 dan b=10
- c == d artinya, apakah nilai c sama dengan d ?? jawabanya True karena c=40 dan b=40
- && nya itu sebagai perbedaan/perbandingan, kalo iya nilai dari masing2 di atas benar semua maka kode di dalam if(a == b && c==d) di jalankan, dan outputnya "Iya, a dan b nilainya sama && c dan d nilai nya sama"
Sebaliknya jika saya ganti c=30 jadi kan nilai c itu tidak sama dengan d kan ???? jadi nilai dalam booleanya (False). berarti di simpulkan dalam operator Bitwise nya (true/1 & false/0) hasilnya ?? false/0 lihat dalam tabel kebenaran di atas...
Jadi ketika di compile akan menjalankan kode yang ada di dalam else karena kondisi di if itu ada yang tidak sesuai/tidak sama atau FALSE, jadi kode yang ada di if di lewati dan muncul output nya kode yang ada dalam else.
Sama aja dengan operator lainya seperti Or dan Not, silahkan dipahami lagi
2. Operator NOT
misalkan contoh kode untuk NOT
Outputnya :#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
if(a != b ){
cout << "a tidak sama dengan b" << endl;
}
else{
cout << "a sama dengan b" << endl;
}
return 0;
}
a tidak sama dengan b
Dia menjalankan kode yang ada di dalam if(a != b), kenapa terjadi ?? karena apakan nilai a itu != dengan b ??? (!= adalah tidak sama) jawabanya benar/true, nilai a=10 dan nilai b=20 itu nilai yang berbeda.
3. Operator OR
true || true = true
true || false = true
false || true = true
false || false = false
#include <iostream>
using namespace std;
int main()
{
int a = 10;
int b = 10;
int c = 30;
int d = 40;
if(a == b || c == d){
cout << "Iya" << endl;
}
else{
cout << "tidak" << endl;
}
return 0;
}
Outputnya :Iya
a == b itu kan true
c == d itu kan false
dalam Opertator OR (true || false) itu hasilnya true, jadi kode yang dalam if lah yang di jalankan.
tag:
operator bitwise adalah
operator bitwise pada C++
operator bistwize dalam C++
perbedaan operator bitwise dan operator logika
apa yang dimaksud operator bitwise
operator logikaadalah
operator logikapada C++
operator logikadalam C++
perbedaan operator logikadan operator bitwizw
apa yang dimaksud operator logika
The best information for computer field students...
ReplyDelete