Ayo dadi pirembagan bab operasi ing Jawa: numerik, logis, bitwise. Iki minangka basis teoretis sing mesthi dibutuhake kanggo sinau babagan program.
Tabel 1. Operator aritmetika biner
Papat operator pisanan ngirim ora mundhakaken pitakonan: kabeh padha ing matématika. Operator pungkasan, sisa divisi, uga ora nindakake apa-apa sing rumit. Contone, yen kita dibagi 24 karo 7, kita entuk 3 nomer wutuh lan 3 sisa. Sisane operator iki bakal bali:
Saliyane operator binar, Jawa nduweni operator aritmetika unary.
Tabel 2. Operator aritmatika unary:
Tuladha unary plus lan minus:
Operasi increment lan decrement pancen prasaja. Ing kasus sing sepisanan, variabel ditambah 1, ing kaloro, variabel dikurangi 1. Conto ing ngisor iki:
Tabel 3. Operator increment-decrement:
Demonstrasi:
Saliyane aritmetika, ana operasi perbandingan (saka rong nomer). Asil bakal tansah bener utawa salah ( bener / salah ).
Tabel 4. Operator perbandingan
Tuladha:
Tabel 5. Tabel Kebenaran Operator Negasi (NOT)
Tabel 6. Tabel kebenaran operator konjungsi (AND)
Tabel 7. Tabel kebenaran operator disjunction (OR)
Tabel 8. Tabel kebenaran operator tambahan modulo (XOR)
Jawa nduweni operasi logis sing padha:
Lan kanggo
Saiki, kita duwe operator shorthand (
Kadhangkala asil ekspresi bisa diitung saka operan pisanan. Iki sing mbedakake operator sing disingkat
Ing kasus operator shorthand, bagean liya saka ekspresi ora dievaluasi. Nanging iki kedadeyan mung nalika asil ekspresi wis katon saka operan pisanan.
Ayo nduduhake ngitung saka 0 nganti 15 ing desimal lan biner:
Nalika sampeyan bisa ndeleng, kabeh ora dadi rumit. Saliyane bit, ana unit informasi liyane - bita , kilobyte , megabyte , gigabyte , lsp. Sampeyan mbokmenawa ngerti yen ana 8 bit ing 1 byte . Iki artine apa? Iki tegese 8 bit saurutan manggoni 1 bait. Ing ngisor iki conto apa sing bisa dadi bita:
Voila - iku ora rumit. Nanging isih ana sing kudu dijlentrehake.
Ayo ndeleng iki nggunakake nomer 8-bit minangka conto:
Pendekatan kasebut prasaja lan, ing prinsip, bisa dingerteni. Nanging, ana kekurangan: kesulitan nindakake operasi matematika. Contone, kanthi tambahan angka negatif lan positif. Dheweke ora bisa dilipat kajaba manipulasi tambahan ditindakake.
Ing baris pisanan kita entuk nilai ing sistem angka binar tanpa nul. Sanajan kita ora weruh, dheweke ana. Iki dibuktekake dening baris kapindho, ing ngendi kabeh bit diowahi dadi mbalikke. Iki sebabe kita ndeleng akeh unit sing unggul. Iki mantan nul anjog sing padha digatèkaké déning compiler nalika dicithak ing baris pisanan. Punika program cilik sing uga nampilake nul anjog kanggo gamblang.
Saiki. Apa sampeyan bisa ngomong babagan nomer sing dipindhah menyang sisih tengen? Padha bisa dibagi 2. Saben-saben kita mindhah siji dicokot menyang tengen, kita dibagi nomer asli karo 2. Yen nomer ora bisa dibagi dening 2, asil bakal dibunderaké menyang minus tanpa wates (mudhun). Nanging iki mung bisa digunakake yen kita mindhah bit kanthi persis 1. Lan yen 2 bit, dibagi 4. Kanthi 3 bit, dibagi 8. Kanthi 4 bit, dibagi 16. Waca? Kakuwasan 2... Nalika kita mindhah nomer
- Apa jinis operator ing Jawa?
- Operator Java ing Kursus JavaRush
- Operasi angka ing Jawa
- Operasi Logika ing Jawa
- Operasi bitwise ing Jawa
- Precedence saka operasi ing Jawa
- Conto migunani
Apa jinis operator ing Jawa?
Kanggo operasi apa wae, kita butuh paling ora rong perkara:- operator;
- operand.
Operator Java ing Kursus JavaRush
Sawetara ceramah dikhususake kanggo operator Java ing tingkat kaping papat saka pencarian pisanan - Java Syntax. Utamane, operator kondisional kayata boolean . Kursus kasebut ngemot 22 tugas sing bakal mbantu sampeyan ngerti pakaryan operator perbandingan, operator kondisional, lan operator logis.Operasi angka ing Jawa
Operasi paling umum sing ditindakake dening programer ing angka yaiku menehi nilai numerik menyang variabel. Dheweke, kaya operator,=
kenal karo sampeyan:
int a = 1;
int b = 2;
int c = 3;
Ana uga operasi aritmetika. Iki ditindakake kanthi nggunakake operator aritmetika biner:
System.out.println(24 % 7); // prints 3
Ing ngisor iki conto saka situs dokumentasi Oracle resmi: Program iki bakal ngasilake ing ngisor iki: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4/2 = 2 2 + 8 = 10 10 % 7 = 3 Jawa ngidini sampeyan kanggo gabungke: contone, operator assignments lan operator aritmetika. Ayo ndeleng conto:
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
Ing kene kita wis nemtokake variabel x
lan menehi nilai nol. Sabanjure, ing saben baris kita nemtokake nilai x
kanggo jumlah nilai saiki variabel x
lan siji. Ana panjelasan ing komentar kanggo saben baris. Prosedur iki diarani ngembangake utawa nambah variabel. Operasi incrementing saka conto ing ndhuwur bisa diganti karo sing padha nggunakake 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
Sampeyan bisa nggabungake operator penugasan karo operator aritmetika:
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;
Ayo nuduhake carane conto pungkasan bisa digunakake:
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);
int x = 9;
x++;
System.out.println(x); // 10
int y = 21;
y--;
System.out.println(y); // 20
Ana rong jinis operasi kasebut - postfix lan prefiks. Ing kasus sing sepisanan, operator ditulis sawise variabel, ing kasus kapindho, sadurunge variabel. Bentenipun mung nalika operasi increment utawa decrement dileksanakake. Tuladha lan katrangan ing tabel ing ngisor iki. Ayo kita duwe variabel:
int a = 2;
banjur:
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:
Operasi Logika ing Jawa
Ayo katon ing operasi logis lan tabel bebener saben wong:- operasi negasi (
NOT
); - operasi konjungsi, logika AND (
AND
); - operasi disjunction, logika OR (
OR
); - operasi tambahan modulo, eksklusif UTAWA (
XOR
).
!
- operator negasi;&&
- operator logika LAN (singkat);||
- operator logis UTAWA (singkat);&
- bitwise lan operator;|
- bitwise UTAWA operator;^
- bitwise eksklusif UTAWA operator.
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 iki bakal nampilake: NOT CONTOH: NOT false = true NOT true = false AND CONTOH: false AND false = false false AND true = false true AND false = false true AND true = true OR CONTOH: false OR false = false false UTAWA bener = bener bener UTAWA salah = bener bener UTAWA bener = bener XOR CONTOH: palsu XOR palsu = palsu palsu XOR bener = bener bener XOR salah = bener bener XOR bener = palsu Operator logis mung ditrapake kanggo boolean
variabel. Ing kasus kita, kita ngetrapake langsung menyang nilai, nanging sampeyan uga bisa nggunakake boolean
variabel kasebut:
boolean
ekspresi:
&&
, ||
) lan operator bitwise padha ( &
, |
). Apa bedane antarane wong-wong mau? Kaping pisanan, bitwise bisa ditrapake kanggo integer. Kita bakal ngomong babagan iki mengko. Lan kapindho, sawetara sing disingkat, nanging liyane ora. Kanggo mangerteni apa sing katon kaya singkatan, ayo deleng ekspresi kasebut:
false AND x = ?
true OR x = ?
Iki x
bisa njupuk sembarang nilai Boolean. Lan umume, miturut hukum logika lan tabel bebener, preduli saka bener x
utawa salah , asil saka ekspresi pisanan bakal salah , lan asil kaloro bakal bener . Delengen.
&&
lan ||
. Ing ekspresi sing padha karo sing kasebut ing ndhuwur, dheweke ora ngevaluasi nilai operan kapindho. Punika conto cilik:
Operasi bitwise ing Jawa
Inggih, ing kene kita teka ing bagean sing paling menarik: operasi bitwise. Minangka jeneng kasebut, iki minangka operasi sing ditindakake ing bit. Nanging sadurunge kita nyilem menyang topik iki, iku worth ngomong bab wilayah related.Representasi angka ing sistem angka biner
Nomer, kaya informasi liyane ing program, disimpen ing memori komputer ing kode binar. Kode binar yaiku sakumpulan nol lan siji. Saben nol utawa siji nggambarake unit informasi sing diarani bit.Miturut Wikipedia:
A bit (saka angka biner Inggris - angka biner; uga dolanan tembung: bit Inggris - potongan, partikel) minangka unit pangukuran jumlah informasi. 1 bit informasi minangka simbol utawa sinyal sing bisa njupuk rong makna: urip utawa mati, ya utawa ora, dhuwur utawa kurang, diisi utawa ora diisi; ing sistem biner iku 1 (siji) utawa 0 (nol).Apa jenis data sing dianggo operator bitwise?
Operasi bitwise ing Jawa ditindakake mung ing integer. Integers disimpen ing memori komputer minangka set bit. Kita bisa ngomong yen komputer ngowahi informasi apa wae menyang sistem angka biner (sakumpulan bit) lan mung banjur sesambungan karo iku. Nanging kepiye cara kerja sistem nomer binar? Ing sistem nomer desimal kita duwe mung 10 simbol: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Kita nggunakake simbol iki kanggo count. Sawise 9 rawuh 10, sawise 19 - 20, sawise 99 - 100, sawise 749 - 750. Sing, kita nggunakake kombinasi kasedhiya 10 simbol lan bisa digunakake kanggo count "saka nul kanggo nedha awan." Ing sistem angka binar, tinimbang sepuluh simbol, mung ana loro - 0, 1. Nanging kanthi nggabungake simbol kasebut miturut prinsip sing padha karo sistem desimal, kita bisa ngetung tanpa wates.
00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Jumlah kombinasi bit sing ora bisa diulang ing siji bait yaiku 256 (2 8 = 256). Nanging ayo padha bali nyedhaki Jawa. Ana jinis data integer kuwi - byte
. Jinis iki bisa njupuk nilai saka -128 kanggo 127 lan siji nomer ing memori komputer njupuk munggah persis 8 bit, utawa 1 byte. Siji nomer saka jinis iki njupuk persis 1 byte
memori komputer. Lan ing kene jeneng kasebut ora pas kanthi kebetulan. Nalika kita ngelingi, 1 byte bisa nyimpen 256 nilai beda. Lan siji jinis nomer byte
bisa njupuk 256 nilai beda (128 negatif, 127 positif lan 1 nul). Saben nilai nomer byte
duwe set unik saka wolung bit. Iki kasus ora mung karo jinis byte
, nanging karo kabeh jinis integral. Jinis kasebut byte
diwenehi conto minangka sing paling cilik. Tabel ing ngisor iki nuduhake kabeh jinis integer Jawa lan papan memori padha manggoni: Coba jinis int
. Bisa nyimpen 2147483648 nilai negatif, 2147483647 nilai positif, lan siji nol. Total:
2147483648 + 2147483647 + 1 = 4294967296.
Jinis iki njupuk 32 bit ing memori komputer. Jumlah kombinasi sing bisa ditindakake saka set 32 nol lan siji yaiku:
232 = 4294967296.
Nomer sing padha karo jumlah nilai sing bisa ditahan int
. Iki mung minangka demonstrasi hubungan antarane sawetara nilai jinis data lan ukurane (jumlah bit ing memori). Sembarang nomer saka jinis apa wae ing Jawa bisa diowahi dadi binar. Ayo ndeleng carane gampang iki bisa rampung nggunakake basa Jawa. Kita bakal sinau saka conto jinis int
. Jinis iki nduweni kelas bungkus dhewe - Integer
. Lan dheweke duwe siji toBinaryString
, sing bakal nindakake kabeh pakaryan kanggo kita:
int
nomer njupuk 32 bit. Nanging nalika kita print nomer 10 ing conto ing ndhuwur, kita ndeleng 1010 ing console. Iki amarga nul anjog ora dicithak. Yen ditampilake, tinimbang 1010, kita bakal weruh 00000000000000000000000000001010 ing konsol. Nanging supaya gampang dirasakake, kabeh nol utama diilangi. Ora angel nganti sampeyan takon dhewe: kepiye angka negatif? Iku perceives informasi mung ing sistem binar. Pranyata tandha minus uga kudu ditulis ing kode biner. Iki bisa ditindakake kanthi nggunakake kode langsung utawa komplementer.
Kode langsung
Cara makili nomer ing sistem angka biner, ing ngendi bit paling signifikan (bit paling kiwa) dialokasikan kanggo tandha nomer kasebut. Yen nomer positif, bit paling kiwa ditulis 0, yen negatif - 1.Kode tambahan
Kanthi nggunakake kode tambahan, sampeyan bisa ngindhari kekurangan kode langsung. Ana algoritma prasaja kanggo njupuk kode tambahan saka nomer. Ayo dadi nyoba kanggo njaluk kode tambahan kanggo nomer -5. Ayo diwakili nomer iki nggunakake kode komplemen loro ing sistem nomer biner. Langkah 1. Kita entuk perwakilan saka nomer negatif nggunakake kode langsung. Kanggo -5 bakal dadi 10000101. Langkah 2. Walik kabeh digit kajaba digit tandha. Ayo dadi ngganti kabeh nul karo siji, lan siji karo nul nang endi wae kajaba bit paling kiwa.
10000101 => 11111010
Langkah 3. Tambah siji menyang nilai asil:
11111010 + 1 = 11111011
siyap. Kita entuk nilai -5 ing sistem angka biner nggunakake kode komplemen loro. Iki penting kanggo mangerteni materi ing ngisor iki, wiwit Jawa nggunakake kode pelengkap loro kanggo nyimpen nomer negatif ing bit.
Jinis operasi bitwise
Saiki kita wis ngrampungake kabeh introduksi, ayo ngomong babagan operasi bitwise ing Jawa. Operasi bitwise ditindakake ing integer lan asile minangka integer. Ing proses kasebut, angka kasebut diowahi dadi binar, operasi ditindakake saben bit, lan asil diowahi dadi desimal. Dhaptar operasi ing tabel ing ngisor iki: Kita wis ketemu metu, nomer bisa dituduhake minangka pesawat saka bit. Operasi bitwise nindakake operasi ing saben bit saka perwakilan kasebut. Ayo njupukNOT
,,, . AND
_ Elinga yen kita bubar ndeleng tabel bebener mung kanggo operan logis. Ing kasus iki, operasi sing padha ditrapake kanggo saben bit integer. OR
XOR
Operator unary bitwise NOT ~
Operator iki ngganti kabeh nul karo siji, lan kabeh karo nul. Ayo kita duwe nomer 10 ing notasi desimal. Ing binar, angka iki 1010. Yen kita nggunakake operator negasi bitwise unary kanggo nomer iki, kita entuk kaya iki: Ayo ndeleng apa sing katon ing kode Jawa: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));
}
Saiki ayo ndeleng apa sing ditampilake ing konsol:
Bitwise AND operator
Operator iki ditrapake kanggo rong nomer. Iku nindakake operasiAND
antarane bit saben nomer. Ayo katon ing conto: Operasi iki dileksanakake ing rong nomer. Tuladha ing kode Jawa:
Bitwise UTAWA operator
UTAWA ditrapake kanggo rong nomer. Iku nindakake operasi UTAWA antarane bit saben nomer: Saiki ayo kang njupuk dipikir apa iki bakal katon kaya ing IDEA:Operasi bitwise, eksklusif OR (XOR)
Ayo goleki conto sing padha, nanging kanthi operasi anyar: Kode conto:Bitwise shift ngiwa
Operator iki ditrapake kanggo rong operand, yaiku, ing operasi kasebutx << y
, bit nomer kasebut x
bakal ngalih y
posisi ngiwa. Iki artine apa? Coba deleng conto operasi kasebut, 10 << 1
asil operasi bakal dadi angka 20 ing sistem desimal. Nalika sampeyan bisa ndeleng saka diagram ndhuwur, kabeh bit dipindhah ngiwa dening 1. Sajrone operasi iki, Nilai saka bit paling pinunjul (bit paling kiwa) ilang. Lan bit paling penting (bit paling tengen) diisi nol. Apa sampeyan bisa ngomong babagan operasi iki?
-
Kanthi ngoper bit nomer
X
kanthiN
bit ngiwa, kita multiply nomer karoX
2 N.Iki contone:
-
Nanging! Tandha nomer bisa diganti yen bit karo nilai 1 njupuk posisi paling kiwa.
-
Yen sampeyan ngalih ngiwa tanpa wates, angka kasebut bakal dadi 0. Ayo nuduhake poin 2 lan 3:
Bitwise shift tengen
Operator iki ditrapake kanggo rong operand. Sing. ing operasix >> y
, bit saka nomer x
bakal ngalih y
posisi menyang tengen. Ayo goleki conto liyane. Ayo kita analisa skematis operasi kasebut 10 >> 1
. Ayo ngalih kabeh bit saka nomer 10 siji posisi menyang tengen: Sajrone operasi shift, kita ilang bit tengen. Padha mung ilang. Bit paling kiwa minangka tandha nomer (0 positif, 1 negatif). Mulane, ing nilai final diselehake padha ing nomer asli. Conto karo nomer negatif: Bit paling tengen ilang, lan bit paling kiwa disalin saka nomer asli, minangka tandha kehormatan saka nomer. Kepiye carane nindakake kabeh iki ing IDEA? Ing asas, ora ana sing rumit, mung njupuk lan pindhah:
X
menyang N
tengen dening bit, kita dibagi nomer X
dening 2 kanggo daya 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 sing kedadeyan ing kene?
-
A loop ing ngendi variabel i ditambah saka 1 nganti 10.
- Saben iterasi kita ngetung 2 nilai:
-
Kita nulis menyang variabel
shiftOperationResult
asil nggeser nomer 2048 dening i bit ing sisih tengen; -
devideOperationResult
Kita nulis asil pamisah angka 2048 kanthi 2 menyang daya i dadi variabel . -
Kita nampilake rong nilai sing dipikolehi kanthi pasangan.
GO TO FULL VERSION