JavaRush /Java Blog /Random-TK /Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bit...

Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise

Toparda çap edildi
Java-daky amallar barada gürleşeliň: san, logiki, birneme. Bu teoretiki esas bolup, programmirlemegi öwrenmek üçin hökman zerurdyr. Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 1

Java-da operatorlaryň görnüşleri haýsylar?

Islendik amal üçin azyndan iki zat gerek:
  • operator;
  • operand.
Operatoryň mysaly, iki san goşmak işinde ýönekeý bir plýus bolup biler. Biri-birine goşulan sanlar bu ýagdaýda operand bolar. Şeýlelik bilen, operatorlaryň kömegi bilen bir ýa-da birnäçe operanda amal edýäris. Iki operanda amallary ýerine ýetirýän operatorlara ikilik diýilýär. Mysal üçin, iki san goşmak. Bir operandda amallary ýerine ýetirýän operatorlara “unary” diýilýär. Mysal üçin, bir minus.

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:
Tablisa 1. Ikilik arifmetiki operatorlar
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 2Ilkinji 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:
System.out.println(24 % 7); // prints 3
Resmi Oracle resminamalar sahypasyndan mysallar: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 3Bu 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 xwe oňa nol bahasyny belledik. xOndan 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ň:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 4
Ikilik operatorlaryndan başga-da, Java-da birmeňzeş arifmetiki operatorlar bar.
Tablisa 2. Bitewi arifmetiki operatorlar:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 4“Unary plus” we minusyň mysaly:
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);
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 6
Artdyrmak we peseltmek amallary aslynda ýönekeýdir. Birinji ýagdaýda üýtgeýji 1, ikinjisinde üýtgeýji 1 azalýar. Mysal aşakda:
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ň:
Tablisa 3. Ösüşiň azalmagy operatorlary:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 5Görkeziş:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 8
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
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 9Mysallar:
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 operatorlary bilen tanyşlyk: Boolean, Arifmetic, Bitwise - 10

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).
Ationatyryş operatory birmeňzeş däl we bir operanda degişlidir. Beýleki amallaryň hemmesi ikilikdir. Geliň, bu amallaryň hakykat tablisalaryna seredeliň. Bu ýerde 0 Java-da ýalana , 1-i bolsa hakykata deňdir .
Tablisa 5. ationaramazlyk operatory hakykat tablisasy (NOTOK)
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 7
Tablisa 6. Birleşdiriji operatoryň hakykat tablisasy (AND)
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 8
Tablisa 7. Kesiş operatorynyň hakykat tablisasy (OR)
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 9
Tablisa 8. Modul goşmak operatorynyň hakykat tablisasy (XOR)
Java operatorlary bilen tanyşlyk: Boolean, Arifmetic, Bitwise - 10Java-da şol bir logiki amallar bar:
  • !- ýatyryş operatory;
  • &&- logiki we operator (gysga);
  • ||- logiki ýa-da operator (gysga);
  • &- bitwise we operator;
  • |- birneme ýa-da operator;
  • ^- birneme eksklýuziw ýa-da operator.
Aşakdaky bitwise we stenografiýa operatorlarynyň arasyndaky tapawuda seredeliň, şol bir wagtyň özünde ähli hakykat tablisalaryny Java koduna öwüreliň:
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:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 15
Aňlatmalara boolean:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 16
Indi, stenografiki operatorlarymyz ( &&, ||) 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 xislendik 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ň.
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 17
Käwagt aňlatmanyň netijesini birinji operanddan hasaplap bolýar. Bu gysgaldylan operatorlary &&we ||. Aboveokarda beýan edilenlere meňzeş sözlemlerde, ikinji operanyň bahasyna baha bermeýärler. Ine kiçijik mysal:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 18
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.

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.
0-dan 15-e çenli sanlary onluk we ikili görnüşde görkezeliň:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 11Gö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:

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. byteBu 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 byte256 dürli bahany alyp biler (128 negatiw, 127 polo positiveitel we 1 nol). Her bir san bahasy bytesekiz 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 byteiň 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: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 12Gö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. toBinaryStringWe biziň üçin ähli işleri etjek biri bar :
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 21
Voila - beýle çylşyrymly däl. Emma şonda-da bir zady aýdyňlaşdyrmaly. intsany 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.
Muňa mysal hökmünde 8 bitli belgini ulanyp seredeliň:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 13Ç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.

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: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 14Öň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. ORXOR

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 operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 15Java 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ň:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 25
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.
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 26

Bitwise we operator

Bu operator iki belgä degişlidir. ANDHer sanyň bitleriniň arasynda amal ýerine ýetirýär . Bir mysala seredeliň: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 16Bu amal iki san boýunça amala aşyrylýar. Java kodundaky mysal:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 28

Bitwise ýa-da operator

ORA-da iki belgä degişlidir. Her sanyň bitleriniň arasynda OR operasiýasyny ýerine ýetirýär: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 17Indi IDEA-da nähili boljakdygyna göz aýlalyň:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 30

Bitwise operasiýa, aýratyn OR (XOR)

Geliň, şol bir mysala seredeliň, ýöne täze amal bilen: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 18Mysal kody:
Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 32

Bitwise smena çepe

Bu operator iki operanda degişlidir, ýagny amalda x << y, sanyň bitleri pozisiýalary çepe xgeçirer . yBu näme many berýär? Amalyň mysalyna seredeliň, 10 << 1 Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 19amalyň 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?
  1. Sanyň bitlerini bitlere çepe geçirmek bilen X, sanlary 2 NN köpeldýäris .X

    Ine bir mysal:

    Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 34
  2. Emma! 1 bahasy bolan bit iň çep orny eýelese, belginiň belgisi üýtgäp biler.

  3. Çekimsiz çepe süýşürseňiz, san diňe 0-a öwrüler. Geliň 2-nji we 3-nji nokatlary görkezeliň:

    Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 35

Bitwise saga süýşüriň

Bu operator iki operanda degişlidir. Bular. amalda x >> y, sanyň bitleri pozisiýalary saga xöwürer . yBaşga bir meselä seredeliň. Geliň, amaly shematiki taýdan analiz edeliň 10 >> 1. Geliň, 10-njy belginiň ähli bitlerini sag tarapa geçireliň: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 20ç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: Java operatorlary bilen tanyşlyk: Logiki, arifmetiki, Bitwise - 21Iň 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ň:
Знакомство с операторами Java: логические, арифметические, побитовые - 38
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üň? X2-iň güýji ... Sanlary bitler bilen saga geçirenimizde N, sanlary X2-ä 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?
  1. I üýtgeýjiniň 1-den 10-a çenli köpelýän aýlawy.

  2. Her gaýtalama 2 bahany hasaplaýarys:
    • Üýtgeýjä shiftOperationResult2048 belgisini i bit bilen saga geçirmegiň netijesini ýazýarys;

    • devideOperationResult2048-nji belgini i güýjüne 2-e bölmegiň netijesini üýtgeýjä ýazýarys .

  3. Alnan iki bahany jübüt görnüşde görkezýäris.

Programmany ýerine ýetirmegiň netijesi aşakdakylar: 1024 - 1024 512 - 512 256 - 256 128 - 128 64 - 64 32 - 32 16 - 16 8 - 8 4 - 4 2 - 2

Nol padding bilen bitwise sag smena

Adaty sag çalşyk san belgisini saklasa-da (iň ähmiýetli bit öz bahasyny saklaýar), nol doldurylan sag smena ýok. Iň ähmiýetli bit bolsa nol bilen doldurylýar. Görnüşine seredeliň: Знакомство с операторами Java: логические, арифметические, побитовые - 22

Java-da amallaryň ähmiýeti

Matematika ýaly, Java-da amallaryň ileri tutulýan ýeri bar. Aşakdaky tablisada göz öňünde tutulan amallaryň ileri tutulýan ýeri (iň ýokarydan aşaklygyna) görkezilýär. Знакомство с операторами Java: логические, арифметические, побитовые - 23

Peýdaly mysallar

Sanyň deňligini kesgitlemek

Знакомство с операторами Java: логические, арифметические, побитовые - 24

Bir massiwde iň ýokary elementi tapmak

Знакомство с операторами Java: логические, арифметические, побитовые - 25Iň pes elementi tapmak üçin deňeşdirme belgisini gerek ýerinde üýtgediň.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION