Java-daky amallar barada gürleşeliň: san, logiki, birneme. Bu teoretiki esas bolup, programmirlemegi öwrenmek üçin hökman zerurdyr.
Tablisa 1. Ikilik arifmetiki operatorlar
Ilkinji dört operator hiç hili sorag döretmeli däl: hemme zat matematikadaky ýaly. Iň soňky operator, bölünişigiň galan bölegi hem gaty çylşyrymly zat etmeýär. Mysal üçin, 24-den 7-ä bölsek, 3 sany san we galanlary alarys. Bu operatoryň gaýdyp geljekdigi:
Ikilik operatorlaryndan başga-da, Java-da birmeňzeş arifmetiki operatorlar bar.
Tablisa 2. Bitewi arifmetiki operatorlar:
“Unary plus” we minusyň mysaly:
Artdyrmak we peseltmek amallary aslynda ýönekeýdir. Birinji ýagdaýda üýtgeýji 1, ikinjisinde üýtgeýji 1 azalýar. Mysal aşakda:
Tablisa 3. Ösüşiň azalmagy operatorlary:
Görkeziş:
Arifmetikadan başga-da deňeşdirme amallary bar (iki sandan). Netije hemişe dogry ýa-da ýalan bolar ( dogry / ýalan ).
Tablisa 4. Deňeşdiriş operatorlary
Mysallar:
Tablisa 5. ationaramazlyk operatory hakykat tablisasy (NOTOK)
Tablisa 6. Birleşdiriji operatoryň hakykat tablisasy (AND)
Tablisa 7. Kesiş operatorynyň hakykat tablisasy (OR)
Tablisa 8. Modul goşmak operatorynyň hakykat tablisasy (XOR)
Java-da şol bir logiki amallar bar:
Aňlatmalara
Indi, stenografiki operatorlarymyz (
Käwagt aňlatmanyň netijesini birinji operanddan hasaplap bolýar. Bu gysgaldylan operatorlary
Stenografiýa operatorlary bolan ýagdaýynda, aňlatmanyň ikinji bölegi baha berilmeýär. Thisöne bu diňe aňlatmanyň netijesi birinji operanddan belli bolanda bolýar.
0-dan 15-e çenli sanlary onluk we ikili görnüşde görkezeliň:
Görşüňiz ýaly, hemme zat beýle bir çylşyrymly däl. Bitlerden başga-da, beýleki tanyş maglumatlar birlikleri bar - baýt , kilobaýt , megabaýt , gigabaýt we ş.m. 1 baýtda 8 bitiň bardygyny bilýän bolsaňyz gerek . Bu näme many berýär? Diýmek, yzygiderli 8 bit 1 baýt tutýar. Ine, baýtlaryň bolup biljekdiginiň mysallary:
Voila - beýle çylşyrymly däl. Emma şonda-da bir zady aýdyňlaşdyrmaly.
Muňa mysal hökmünde 8 bitli belgini ulanyp seredeliň:
Çemeleşme ýönekeý we esasan düşnükli. Şeýle-de bolsa, onuň kemçilikleri bar: matematiki amallary ýerine ýetirmekde kynçylyklar. Mysal üçin, otrisatel we polo positiveitel sanlaryň goşulmagy bilen. Goşmaça manipulýasiýa edilmese, bukulyp bilinmez.
Birinji setirde öňdebaryjy nol bolmazdan ikilik san ulgamynda baha aldyk. Olary görmesek-de, olar bar. Bithli bitleriň tersine öwrülen ikinji setiri muny subut edýär. Şonuň üçin köp öňdebaryjy bölümleri görýäris. Bular birinji setirde çap edilende düzüji tarapyndan hasaba alynmadyk öňki öňdebaryjy nollar. Ine, aýdyňlyk üçin öňdebaryjy nollary görkezýän kiçijik programma.
Indi. Sag tarapa süýşürilen sanlar barada näme aýdyp bilersiňiz? Olary 2-ä bölýärler. Her gezek bir saga süýşürenimizde, asyl belgini 2-ä bölýäris, eger san 2-ä bölünmese, netije minus çäksizlige (aşak) tegelek bolar. Thisöne bu diňe bitleri takyk 1-e üýtgedenimizde işleýär we 2 bit bilen 4-e bölüň, 3 bit bilen, 8-e bölüň, 4-e bölüň, 16-a bölüň?
- Java-da operatorlaryň görnüşleri haýsylar?
- JavaRush kursynda Java operatorlary
- Java-da san amallary
- Java-da logiki amallar
- Java-da bitwise amallary
- Java-da amallaryň ähmiýeti
- Peýdaly mysallar
Java-da operatorlaryň görnüşleri haýsylar?
Islendik amal üçin azyndan iki zat gerek:- operator;
- operand.
JavaRush kursynda Java operatorlary
Birnäçe leksiýa ilkinji gözlegiň dördünji derejesinde - Java Sintaksisindäki Java operatorlaryna bagyşlanýar . Hususan-da, boolean ýaly şertli operatorlar . Kursda deňeşdirme operatorlarynyň, şertli operatorlaryň we logiki operatorlaryň işine düşünmäge kömek etjek 22 mesele bar.Java-da san amallary
Programmistleriň sanlarda ýerine ýetirýän iň köp ýaýran amaly, üýtgeýjä san bahasyny bellemekdir. Ol, operator ýaly,=
size-de tanyş:
int a = 1;
int b = 2;
int c = 3;
Arifmetiki amallar hem bar. Ikilik arifmetiki operatorlaryň kömegi bilen amala aşyrylýar:
System.out.println(24 % 7); // prints 3
Resmi Oracle resminamalar sahypasyndan mysallar: Bu programma aşakdakylary çykarar: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4/2 = 2 2 + 8 = 10 10% 7 = 3 Java size mümkinçilik berýär birleşdirmek: mysal üçin, operatorlaryň tabşyryklary we arifmetiki operatorlar. Bir mysala seredeliň:
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
Bu ýerde üýtgeýjini kesgitledik x
we oňa nol bahasyny belledik. x
Ondan soň, her setirde üýtgeýjiniň we biriniň häzirki bahasynyň jemine bir baha belläris x
. Her setir üçin teswirlerde düşündirişler bar. Bu prosedura üýtgeýjini ulaltmak ýa-da köpeltmek diýilýär. Aboveokardaky mysaldan artýan amal, operatorlaryň kombinasiýasyny ulanyp, şuňa meňzeş amal bilen çalşyrylyp bilner:
int x = 0;
x += 1; // x = 0 + 1 => x = 1
x += 1; // x = 1 + 1 => x = 2
x += 1; // x = 2 + 1 => x = 3
Taslama operatoryny islendik arifmetiki operator bilen birleşdirip bilersiňiz:
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;
Iň soňky mysalyň nähili işleýändigini görkezeliň:
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
Bu amallaryň iki görnüşi bar - postfiks we prefiks. Birinji ýagdaýda operator üýtgeýjiden soň, ikinji ýagdaýda üýtgeýjiden öň ýazylýar. Onlyeke-täk tapawut, artdyrmak ýa-da peseltmek amaly ýerine ýetirilende. Aşakdaky tablisadaky mysal we düşündiriş. Üýtgeýjimiz bar diýeliň:
int a = 2;
Soň:
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);
Görkeziş:
Java-da logiki amallar
Geliň, olaryň hersiniň logiki amallaryna we hakykat tablisalaryna seredeliň:- negatiw amal (
NOT
); - birikdirme amaly, logiki we (
AND
); - kesiş amaly, logiki OR (
OR
); - modul goşmak amaly, aýratyn OR (
XOR
).
!
- ýatyryş operatory;&&
- logiki we operator (gysga);||
- logiki ýa-da operator (gysga);&
- bitwise we operator;|
- birneme ýa-da operator;^
- birneme eksklýuziw ýa-da 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();
}
}
Bu programma görkeziler: MESELE BOLANOK: ýalňyş däl = dogry däl dogry = ýalan we MESELE: ýalan we ýalan = ýalan ýalan we dogry = ýalan dogry we ýalan = ýalan dogry we dogry = dogry ýa-da MESELE: ýalan ýa-da ýalan = ýalan ýa-da dogry = hakyky dogry ýa-da ýalan = hakyky dogry ýa-da dogry = hakyky XOR MESELE: ýalan XOR ýalan = ýalan ýalan XOR dogry = hakyky hakyky XOR ýalan = hakyky hakyky XOR dogry = ýalan Logiki operatorlar diňe üýtgeýänlere degişlidir boolean
. Biziň ýagdaýymyzda, gönüden-göni bahalara ulanýardyk, ýöne boolean
üýtgeýjiler bilen hem ulanyp bilersiňiz:
boolean
:
&&
, ||
) we şuňa meňzeş bitli operatorlar ( &
, |
) bar. Olaryň arasynda näme tapawut bar? Ilki bilen bitwise bitewi sanlara ulanylyp bilner. Bu barada azajyk soň gürleşeris. Ikinjiden, käbirleri gysgaldylýar, beýlekileri ýok. Gysgaltmanyň nähili bolýandygyna düşünmek üçin geliň aňlatma seredeliň:
false AND x = ?
true OR x = ?
Bu x
islendik Boolean bahasyny alyp biler. x
Umuman aýdanyňda, logika we hakykat tablisalarynyň kanunlaryna görä, hakykat ýa-da ýalan däldigine garamazdan , birinji sözlemiň netijesi ýalan bolar , ikinjisiniň netijesi dogry bolar . Serediň.
&&
we ||
. Aboveokarda beýan edilenlere meňzeş sözlemlerde, ikinji operanyň bahasyna baha bermeýärler. Ine kiçijik mysal:
Java-da bitwise amallary
Dogrusy, bu ýerde iň gyzykly bölüme gelýäris: birneme amallar. Adyndan görnüşi ýaly, bular bitlerde ýerine ýetirilýän amallar. Thisöne bu mowzuga girmezden ozal baglanyşykly ugurlar barada gürleşmeli.Ikilik san ulgamynda sanlaryň wekilçiligi
Sanlar, programmadaky beýleki maglumatlar ýaly kompýuter ýadynda ikilik kodda saklanýar. Ikilik kody nollaryň we toplumlaryň toplumydyr. Her nol ýa-da biraz diýilýän maglumat birligini aňladýar.Wikipediýa görä:
Biraz (Iňlis ikilik belgisinden - ikilik belgiden; sözleriň üstündäki oýun: Iňlis biti - bölek, bölejik) maglumat mukdaryny ölçemegiň birligi. 1 bit maglumat iki many aňladyp bilýän nyşan ýa-da signaldyr: ýapyk ýa-da öçürilen, hawa ýa-da ýok, ýokary ýa-da pes, zarýadly ýa-da zarýad berilmedik; ikilik ulgamynda 1 (bir) ýa-da 0 (nol).Bitwise operatorlary haýsy maglumatlar bilen işleýärler?
Java-da bitwise amallary diňe bitewi sanlarda ýerine ýetirilýär. Bitewi sanlar toplumy hökmünde kompýuteriň ýadynda saklanýar. Kompýuter islendik maglumatlary ikilik san ulgamyna (bitler toplumyna) öwürýär we diňe şondan soň özara täsirleşýär diýip bileris. Emma ikilik san ulgamy nähili işleýär? Onluk san ulgamynda diňe 10 nyşan bar: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Bu nyşanlary sanamak üçin ulanýarys. 9-dan soň 10, 19 - 20-den soň, 99 - 100-den soň, 749 - 750-den soň gelýär., Agny, bar bolan 10 nyşanyň kombinasiýasyny ulanýarys we olary “noldan günortana çenli” sanamak üçin ulanyp bileris. Ikilik san ulgamynda on nyşanyň ýerine diňe iki - 0, 1 bar. Theseöne bu nyşanlary onluk ulgamdaky ýaly prinsip boýunça birleşdirip, çäksiz sanap bileris.
00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Bir baýtda bitleriň gaýtalanmaýan kombinasiýalarynyň sany 256 (2 8 = 256). Emma Java-a has ýakynlaşalyň. Şeýle bitewi maglumatlaryň görnüşi bar - byte
. Bu görnüş -128-den 127-e çenli bahalary alyp biler we kompýuter ýadynda bir san takmynan 8 bit ýa-da 1 baýt alýar. byte
Bu görnüşiň bir sany takmynan 1 kompýuter ýadyny alýar . Bu ýerde atlar tötänleýin däl. .Adymyzda bolsa, 1 baýt 256 dürli bahany saklap bilýär. Bir görnüşli san byte
256 dürli bahany alyp biler (128 negatiw, 127 polo positiveitel we 1 nol). Her bir san bahasy byte
sekiz bitden ybaratdyr. Bu diňe bir görnüşi bilen däl byte
, eýsem ähli aýrylmaz görnüşleri bilen hem bolýar. Görnüşi byte
iň kiçi hökmünde mysal hökmünde berilýär. Aşakdaky tablisada ähli Java bitewi görnüşleri we tutýan ýat ýeri görkezilýär: Görnüşine serediň int
. 2147483648 otrisatel bahalary, 2147483647 oňyn bahalary we bir noly saklap bilýär. Jemi:
2147483648 + 2147483647 + 1 = 4294967296.
Bu görnüş kompýuter ýadynda 32 bit alýar. 32 noldan ybarat bolan kombinasiýalaryň sany:
232 = 4294967296.
Görnüşiň saklap bilýän bahalarynyň sany bilen deň san int
. Bu, diňe maglumat görnüşiniň bahalarynyň diapazony bilen onuň ululygynyň (ýatdaky bitleriň sany) arasyndaky baglanyşygyň görkezijisidir. Java-daky islendik görnüş ikili görnüşe öwrülip bilner. Java dilini ulanyp, munuň aňsat edilip bilinjekdigini göreliň. Görnüşiniň mysalyndan öwreneris int
. Bu görnüşiň öz örtük synpy bar - Integer
. toBinaryString
We biziň üçin ähli işleri etjek biri bar :
int
sany 32 bit alýar. Aboveöne ýokardaky mysalda 10 belgini çap edenimizde, konsolda 1010 görýäris, sebäbi öňdebaryjy nollar çap edilmeýär. Eger görkezilen bolsa, 1010-yň ýerine 000000000000000000000000000001010 konsolynda görerdik. Eptionöne duýmagy aňsatlaşdyrmak üçin öňdebaryjy nollaryň hemmesi ýok. Özüňize soraýançaňyz beýle kyn däl: negatiw sanlar hakda näme? Maglumatlary diňe ikilik ulgamynda kabul edýär. Görnüşi ýaly, minus belgisi ikilik kodda hem ýazylmalydyr. Bu göni ýa-da goşmaça kod ulanyp bolýar.
Göni kod
Sanlaryň belgisine iň möhüm bit (iň çep bit) bölünip berlen ikilik san ulgamynda sanlary görkezmegiň usuly. San polo isitel bolsa, iň çep bölegi 0, negatiw bolsa 1 ýazylýar.Goşmaça kod
Goşmaça kod ulanyp, göni koduň kemçiliklerinden gaça durup bilersiňiz. Sanyň goşmaça koduny almak üçin ýönekeý algoritm bar. Geliň -5 belgisi üçin goşmaça kod almaga synanyşalyň. Ikilik san ulgamynda iki sany goşmaça kod ulanyp, bu belgini görkezeliň. Stepdim 1. Göni kod ulanyp, otrisatel sanyň şekilini alýarys. -5 üçin 10000101 bolar. 2-nji ädim. Belgi belgisinden başga ähli sanlary öwüriň. Geliň, ähli nollary biri bilen, iň çep tarapdan başga hemme ýerde nol bilen çalyşalyň.
10000101 => 11111010
Stepdim 3. Netijäniň bahasyna birini goşuň:
11111010 + 1 = 11111011
Taýýar. Ikisiniň goşmaça koduny ulanyp, ikilik san ulgamynda -5 bahasyny aldyk. Bu aşakdaky materiallara düşünmek üçin möhümdir, sebäbi Java negatiw sanlary bitlerde saklamak üçin iki sany goşmaça kod ulanýar.
Bitwise amallaryň görnüşleri
Indi ähli girişler bilen iş salyşanymyzdan soň, Java-da bitwise amallary barada gürleşeliň. Bir bitewi amal bitewi sanlarda ýerine ýetirilýär we netijesi bitewi san. Bu amalda san ikile öwrüler, her bitde operasiýa edilýär we netijesi onluga öwrülýär. Amallaryň sanawy aşakdaky tablisada: Öňem bilşimiz ýaly, sanlar bitleriň toplumy hökmünde görkezilip bilner. Bitwise amallary, şeýle şekillendirişiň her bir böleginde amallary ýerine ýetirýär. GeliňNOT
,,, . AND
_ _ Recentlyakynda hakykat tablisalaryna diňe logiki amallar üçin seredendigimizi ýadyňyzdan çykarmaň. Bu ýagdaýda bitewi sanlaryň her bitine şol bir amallar ulanylýar. OR
XOR
Bitwise unary operator NOT NOT
Bu operator ähli nollary birine, hemmesini nol bilen çalyşýar. Onluk belgide 10 belgimiz bar diýeliň. Ikitaraplaýyn görnüşde bu san 1010-dyr. Eger-de bu belgä birmeňzeş bitewi negatiw operatory ulansak, şuňa meňzeş bir zat alarys: Java kodundaky görnüşine göz aýlalyň: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));
}
Indi konsolda näme görkezilýändigini göreliň:
Bitwise we operator
Bu operator iki belgä degişlidir.AND
Her sanyň bitleriniň arasynda amal ýerine ýetirýär . Bir mysala seredeliň: Bu amal iki san boýunça amala aşyrylýar. Java kodundaky mysal:
Bitwise ýa-da operator
ORA-da iki belgä degişlidir. Her sanyň bitleriniň arasynda OR operasiýasyny ýerine ýetirýär: Indi IDEA-da nähili boljakdygyna göz aýlalyň:Bitwise operasiýa, aýratyn OR (XOR)
Geliň, şol bir mysala seredeliň, ýöne täze amal bilen: Mysal kody:Bitwise smena çepe
Bu operator iki operanda degişlidir, ýagny amaldax << y
, sanyň bitleri pozisiýalary çepe x
geçirer . y
Bu näme many berýär? Amalyň mysalyna seredeliň, 10 << 1
amalyň netijesi onluk ulgamda 20-nji san bolar. Aboveokardaky diagrammadan görnüşi ýaly, ähli bitler 1-den çepe süýşürilýär. Bu amal wagtynda iň möhüm bitiň (iň çep tarapyň) gymmaty ýitýär. Iň az ähmiýetli bit (iň sag bit) nol bilen doldurylýar. Bu amal barada näme aýdyp bilersiňiz?
-
Sanyň bitlerini bitlere çepe geçirmek bilen
X
, sanlary 2 NN
köpeldýäris .X
Ine bir mysal:
-
Emma! 1 bahasy bolan bit iň çep orny eýelese, belginiň belgisi üýtgäp biler.
-
Çekimsiz çepe süýşürseňiz, san diňe 0-a öwrüler. Geliň 2-nji we 3-nji nokatlary görkezeliň:
Bitwise saga süýşüriň
Bu operator iki operanda degişlidir. Bular. amaldax >> y
, sanyň bitleri pozisiýalary saga x
öwürer . y
Başga bir meselä seredeliň. Geliň, amaly shematiki taýdan analiz edeliň 10 >> 1
. Geliň, 10-njy belginiň ähli bitlerini sag tarapa geçireliň: çalşyk amaly wagtynda dogry bitleri ýitirýäris. Olar ýitýärler. Iň çep tarap, sanyň alamaty (0 polo positiveitel, 1 negatiw). Şonuň üçin iň soňky bahada asyl nomerdäki ýaly ýerleşdirilýär. Negativearamaz san bilen mysal: Iň sag bit ýitýär we iň çep bölegi asyl belgiden, belginiň hormat nyşany hökmünde göçürilýär. Bularyň hemmesini IDEA-da nädip etmeli? Aslynda çylşyrymly zat ýok, ony alyň we göçüriň:
X
2-iň güýji ... Sanlary bitler bilen saga geçirenimizde N
, sanlary X
2-ä 2-ä bölýäris N
. Görkeziş:
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);
}
}
}
Bu ýerde näme bolýar?
-
I üýtgeýjiniň 1-den 10-a çenli köpelýän aýlawy.
- Her gaýtalama 2 bahany hasaplaýarys:
-
Üýtgeýjä
shiftOperationResult
2048 belgisini i bit bilen saga geçirmegiň netijesini ýazýarys; -
devideOperationResult
2048-nji belgini i güýjüne 2-e bölmegiň netijesini üýtgeýjä ýazýarys . -
Alnan iki bahany jübüt görnüşde görkezýäris.
GO TO FULL VERSION