“Urmak” sözi bilen tanyş bolsaňyz gerek. Notok bolsa, geliň muny öwreneliň :) Biraz kompýuterdäki maglumatlary ölçemegiň iň az birligi. Onuň ady iňlis dilindäki “ ikilik san ” - “ikilik san” -dan gelýär. Biraz iki sanyň biri hökmünde aňladylyp bilner: 1 ýa-da 0. Birine we nollara esaslanýan ýörite san ulgamy bar - ikilik. Matematikanyň jeňňelligine girip bilmeris we Java-daky islendik sanyň ikilik görnüşine öwrülip biljekdigini belläliň. Munuň üçin örtük sapaklaryny ulanmaly. Mysal üçin, san üçin nädip etmeli
Operationshli amallar çepden saga ýerine ýetirilýär, ýöne ileri tutulýan ugurlaryny göz öňünde tutýar. Mysal üçin, ýazsak:
int
:
public class Main {
public static void main(String[] args) {
int x = 342;
System.out.println(Integer.toBinaryString(x));
}
}
Konsol çykyşy:
101010110
1010 10110 (okamak üçin ýer goşdum) ikilikdäki 342 belgidir. Aslynda bu sanlary aýratyn bitlere - nollara we sanlara böldük. Hut olar bilen bitwise diýilýän amallary ýerine ýetirip bileris.
-
~
- birneme “NOTOK” operatory.
00000000 00000000 00000001 01010110
- java int görnüşiniň üýtgeýjisindäki 342 san 11111111 11111111 11111110 10101001
- java ~ 342 aňlatmanyň netijesi Geliň muny iş ýüzünde etmäge synanyşalyň:
public class Main {
public static void main(String[] args) {
int x = 342;
System.out.println(Integer.toBinaryString(~x));
}
}
Konsol çykyşy:
11111111111111111111111010101001
-
&
- “AND” görnüşli operator
&&
. Operator &&
, ýadyňyzda bolsa, true
diňe iki operasiýa dogry bolsa gaýdyp gelýär. Bitwise &
şuňa meňzeş görnüşde işleýär: iki sany sanlary birneme deňeşdirýär. Bu deňeşdirmäniň netijesi üçünji san. Mysal üçin, 277 we 432: 100010101 sanlary - ikilik görnüşindäki 277 belgini 110110000 - ikilik görnüşindäki 432 belgisini alalyň Indiki, operator ýokarky belginiň &
birinji bölegini aşaky belginiň birinji biti bilen deňeşdirýär. Bu "AND" operatory bolansoň, netije diňe iki bit 1-e deň bolsa 1-e deň bolar. Beýleki ähli ýagdaýlarda netije 0. 100010101 110110000 _______________ 100010000 bolar &
- işiň netijesi &
Ilki bilen ilkinji bitleri deňeşdirýäris biri-biri bilen iki san, soň ikinji bit, üçünji we ş.m. Görşüňiz ýaly, diňe iki ýagdaýda ikisi hem 1-e deň bolan sanlarda (birinji we bäşinji bit). Beýleki deňeşdirmeleriň netijesi 0 boldy. Şonuň üçin ahyrynda 100010000 belgini aldyk. Onluk ulgamda 272 belgä gabat gelýär. Barlap göreliň:
public class Main {
public static void main(String[] args) {
System.out.println(277&432);
}
}
Konsol çykyşy:
272
|
- birneme “OR”. Işleýiş ýörelgesi birmeňzeş - iki sany sanlary az-kem deňeşdirýäris. Diňe indi bitleriň azyndan biri 1-e deň bolsa, netije 1-e deň bolar. Geliň, şol bir sanlara seredeliň - 277 we 432:
|
110110000 _______________ 110110101 - işiň netijesi. |
Bu ýerde netije başga: diňe iki belgide nol bolan bitler nol bolup galdy. Işiň netijesi 110110101 belgidir. Onluk ulgamda 437 belgä gabat gelýär. Geliň barlap göreliň:
public class Main {
public static void main(String[] args) {
System.out.println(277|432);
}
}
Konsol çykyşy:
437
Biz hemme zady dogry hasapladyk! :)
^
- birneme eksklýuziw OR (XOR hem diýilýär)
true
iň bolmanda bir operand dogry bolsa adaty “ýa-da” gaýdyp gelýär. Emma hökmany suratda biri däl - ikisi hem bar bolsa true
- netijesi true
. Excöne aýratyn “ýa-da” true
diňe operandlaryň biri dogry bolsa gaýdyp gelýär. Iki operanyňam dogry bolsa, yzygiderli “ýa-da” gaýdyp geler true
(“iň bolmanda biri dogry”), ýöne eksklýuziw ýa-da gaýdyp geler false
. Şonuň üçin oňa eksklýuziw diýilýär. Öňki bitwise amallarynyň ýörelgesini bilip, 277 ^ 432 amalyny aňsatlyk bilen ýerine ýetirip bilersiňiz. Itöne geliň, ýene bir gezek bileliň :) 100010101 ^
110110000 _______________ 010100101 - işiň netijesi ^
Ine, biziň netijämiz. Iki san boýunça birmeňzeş bolan bitler 0 gaýdyp geldi (“biri” formulasy işlemedi). Emma 0-1 ýa-da 1-0 jübüti emele getirenler ahyrsoňy birlige öwrüldi. Netijede, 010100101 belgisini aldyk. Onluk ulgamda ol 165 belgä gabat gelýär. Dogry hasaplandygymyzy göreliň:
public class Main {
public static void main(String[] args) {
System.out.println(277^432);
}
}
Konsol çykyşy:
165
Super! Hemme zat edil pikir edişimiz ýaly :) Indi bit smenasy diýilýän amallar bilen tanyşmagyň wagty geldi. Ady, esasan, özi üçin gürleýär. Biraz san alarys we bitlerini çepe we saga geçireris :) Geliň nähili bolýandygyny göreliň:
Çep
Bitleriň çep çalşygy Mysal bilen görkezilýär<<
:
public class Main {
public static void main(String[] args) {
int x = 64;//meaning
int y = 3;//quantity
int z = (x << y);
System.out.println(Integer.toBinaryString(x));
System.out.println(Integer.toBinaryString(z));
}
}
Bu mysalda sana x=64
baha diýilýär. Biziň bitlerimiz. Bitleri çepe öwüreris (muny alamatyň ugry bilen kesgitläp bolýar <<
) Ikilik ulgamynda 64 = 1000000 y=3
belgä san diýilýär. Mukdar “sanyň bitleri sag / çepe näçe bit üýtgedilmeli x
?” Diýen soraga jogap berýär. Mysal üçin, olary 3 bit çepe geçireris. Çalyşma prosesini has düşnükli etmek üçin, surata seredeliň. Mysalymyzda int görnüşiniň sanlaryny ulanýarys. Int
32 bit kompýuter ýadyny eýeleýär. Asyl belgimiz 64-e meňzeýär: Indi bolsa sözüň göni manysynda her bitimizi alyp, 3 öýjük tarapyndan çepe geçirýäris: Bu aldyk. Görşüňiz ýaly, ähli bitlerimiz üýtgedi we çäkden daşarda ýene 3 nol goşuldy. 3 - sebäbi 3-e çalyşýandygymyz üçin 10-a çalyşýan bolsak, 10 nol goşular. Şeýlelik bilen aňlatma x << y
“y sanly öýjükleriň bitlerini х
çepe geçirmek” diýmekdir. Biziň aňlatmamyzyň netijesi, onluk ulgamda 512-e deň bolan 1000000000 sany boldy. Geliň barlap göreliň:
public class Main {
public static void main(String[] args) {
int x = 64;//meaning
int y = 3;//quantity
int z = (x << y);
System.out.println(z);
}
}
Konsol çykyşy:
512
Dogry! Teoriýa boýunça bitler belli bir möhletde üýtgedilip bilner. Emma bizde san barlygy sebäpli int
diňe 32 öýjük bar. Bulardan 7-si eýýäm 64 (1 000 000) sanyny eýeleýär. Şonuň üçin, meselem, çepe 27 smena etsek, ýeke-täk bölümimiz çäkden çykar we “täzeden ýazar”. Diňe nollar galar!
public class Main {
public static void main(String[] args) {
int x = 64;//meaning
int y = 26;//quantity
int z = (x << y);
System.out.println(z);
}
}
Konsol çykyşy:
0
Garaşylyşy ýaly, biri 32 bit öýjükden geçdi we ýitdi. Diňe noldan ybarat 32 bitli san aldyk. Elbetde, onluk ulgamda 0-a gabat gelýär. Çep smenalary ýatda saklamagyň ýönekeý düzgüni: Her çep smena bilen san 2-e köpelýär. Mysal üçin, geliň, aňlatmanyň netijesini bitsiz suratlar bilen hasaplamaga synanyşalyň. Bize 111111111 << 3
zerur 111111111 belgisini 2 gezek üç esse köpeltmek. Netijede 888888888 alarys. Kody ýazalyň we barlap göreliň:
public class Main {
public static void main(String[] args) {
System.out.println(111111111 << 3);
}
}
Konsol çykyşy:
888888888
Sag smena
Bu belgi bilen görkezilýär>>
. Edil şol bir zady edýärler, diňe başga tarapa! :) Geliň, tekeri täzeden dikeltmäliň we muny int 64 belgisi bilen etmäge synanyşalyň.
public class Main {
public static void main(String[] args) {
int x = 64;//meaning
int y = 2;//quantity
int z = (x >> y);
System.out.println(z);
}
}
2-den saga geçmegi netijesinde, nomerimiziň iki sany nol aralygyndan çykdy we pozuldy. Onluk ulgamda 16-a gabat gelýän 10000 belgini aldyk, konsola çykyş:
16
Sag smenalary ýatda saklamagyň ýönekeý düzgüni: Her sag smena galanlary taşlap, ikä bölünýär. Mysal üçin, galanlaryny taşlap (galan 1-i taşlamak) (galanlary taşlamak 1) Jemi 8-e deň bolmaly 35 >> 2
diýmek, 35-den 2-ä iki gezek bölmeli .35/2 = 17
17:2 = 8
35 >> 2
public class Main {
public static void main(String[] args) {
System.out.println(35 >> 2);
}
}
Konsol çykyşy:
8
Java-da amallaryň ähmiýeti
Kod ýazanyňyzda ýa-da okanyňyzda, köplenç bir wagtyň özünde birnäçe amal ýerine ýetirilýän sözlere duşarsyňyz. Olaryň haýsy tertipde ýerine ýetiriljekdigine düşünmek gaty möhümdir, ýogsam netije garaşylmadyk bolup biler. Java-da köp amallar bolansoň, hemmesi ýörite tablisa bölündi:Operatoryň ähmiýeti
Operatorlar | Üstünlik |
---|---|
postfiks | expr++ expr-- |
unary | ++expr --expr +expr ~ ! |
Köpeltmek | * / % |
goşundy | + - |
çalşyk | << >> >>> |
baglanyşyk | < > <= >= mysal |
deňlik | == != |
tersine we | & |
birneme eksklýuziw OR | ^ |
birneme öz içine alýan OR | | |
logiki we | && |
logiki OR | || |
üçünji | ? : |
ýumuş | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
int x = 6 - 4/2;
ilki bilen bölüniş operasiýasy (4/2) ýerine ýetiriler. Ikinji hatarda bolsa-da, has ileri tutýar. Gaplaňlar ýa-da inedördül ýaýlar islendik ileri tutulýan zady maksimum üýtgedýärler. Muny mekdepden ýadyňyzda bolsa gerek. Mysal üçin, olary aňlatma goşsaňyz: int x = (6 - 4)/2;
aýyrmak ilki bilen ýerine ýetiriler, sebäbi ol gabygyň içinde hasaplanýar. Logiki operatoryň &&
tablisadan görnüşi ýaly gaty pes ähmiýeti bar. Şonuň üçin köplenç iň soňky gezek ýerine ýetiriler. Mysal üçin: boolean x = 6 - 4/2 > 3 && 12*12 <= 119;
Bu aňlatma şeýle ýerine ýetiriler:
-
4/2 = 2
boolean x = 6 - 2 > 3 && 12*12 <= 119;
-
12*12 = 144
boolean x = 6 - 2 > 3 && 144 <= 119;
-
6-2 = 4
boolean x = 4 > 3 && 144 <= 119;
-
Ondan soň deňeşdirme operatorlary ýerine ýetiriler:
4 > 3 = true
boolean x = true && 144 <= 119;
-
144 <= 119 = false
boolean x = true && false;
-
Iň soňunda bolsa iň soňky operator ýerine ýetiriler
&&
.boolean x = true && false;
boolean x = false;
Mysal üçin, goşma operatory (
+
) deňeşdirme operatoryndan has ýokary ähmiýete eýe!=
(“deň däl”);Şonuň üçin aňlatmada:
boolean x = 7 != 6+1;
ilki bilen 6 + 1 operasiýasy ýerine ýetiriler, soň bolsa 7! = 7 (ýalan) barlag geçiriler we ahyrynda netije üýtgeýjä
false
berlerx
. Bellenme, adatça, ähli amallaryň iň pes ähmiýeti bar - tablisa serediň.
- Logiki operatorlar - Logiki amallar barada JavaRush leksiýasy. Soonakyn wagtda olara baryp bilmeris, ýöne indi okap bilersiňiz, zyýany bolmaz
GO TO FULL VERSION