JavaRush /Java Blogu /Random-AZ /Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise

Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise

Qrupda dərc edilmişdir
Java-da əməliyyatlar haqqında danışaq: ədədi, məntiqi, bitwise. Bu proqramlaşdırmanı öyrənmək üçün mütləq lazım olan nəzəri əsasdır. Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 1

Java-da hansı operator növləri var?

Hər hansı bir əməliyyat üçün bizə ən azı iki şey lazımdır:
  • operator;
  • operand.
Operatorun nümunəsi iki ədədin toplanması əməliyyatında sadə bir artı ola bilər. Və bir-birinə əlavə olunan ədədlər bu halda operandlar olacaqdır. Beləliklə, operatorların köməyi ilə bir və ya bir neçə operand üzərində əməliyyatlar həyata keçiririk. İki operand üzərində əməliyyatlar yerinə yetirən operatorlara binar deyilir. Məsələn, iki ədəd əlavə etmək. Tək operand üzərində əməliyyatlar yerinə yetirən operatorlara unar deyilir. Məsələn, unary minus.

JavaRush Kursunda Java Operatorları

Bir neçə mühazirə birinci axtarışın dördüncü səviyyəsində - Java Sintaksisində Java operatorlarına həsr edilmişdir . Xüsusilə, boolean kimi şərti operatorlar . Kursda müqayisə operatorlarının, şərti operatorların və məntiqi operatorların işini başa düşməyə kömək edəcək 22 tapşırıq var.

Java-da nömrə əməliyyatları

Proqramçıların ədədlər üzərində yerinə yetirdiyi ən ümumi əməliyyat dəyişənə rəqəmli qiymət təyin etməkdir. O, operator kimi =sizə tanışdır:
int a = 1;
int b = 2;
int c = 3;
Arifmetik əməliyyatlar da var. Onlar ikili arifmetik operatorlardan istifadə etməklə həyata keçirilir:
Cədvəl 1. Binar arifmetik operatorlar
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 2İlk dörd operator heç bir sual verməməlidir: hər şey riyaziyyatdakı kimidir. Son operator, bölmənin qalan hissəsi də çox mürəkkəb bir şey etmir. Məsələn, 24-ü 7-yə bölsək, 3 tam ədəd və 3 qalıq alırıq. Bu operatorun geri qayıdacağının qalan hissəsi:
System.out.println(24 % 7); // prints 3
Budur rəsmi Oracle sənədləşmə saytından nümunələr: Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 3Bu proqram aşağıdakıları çıxaracaq: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4 / 2 = 2 2 + 8 = 10 10 % 7 = 3 Java sizə imkan verir birləşdirmək üçün: məsələn, operatorların tapşırıqları və arifmetik operatorlar. Bir misala baxaq:
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
Burada bir dəyişən təyin etdik xvə ona sıfır dəyəri təyin etdik. Bundan sonra, hər bir sətirdə xdəyişənin cari dəyərinin cəminə bir dəyər təyin edirik x. Şərhlərdə hər sətir üçün izahatlar var. Bu prosedur dəyişəni böyütmək və ya artırmaq adlanır. Yuxarıdakı nümunədəki artım əməliyyatı operatorların birləşməsindən istifadə etməklə oxşar əməliyyatla əvəz edilə bilər:
int x = 0;
x += 1; // x = 0 + 1 => x = 1
x += 1; // x = 1 + 1 => x = 2
x += 1; // x = 2 + 1 => x = 3
Təyinat operatorunu istənilən arifmetik operatorla birləşdirə bilərsiniz:
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;
Son nümunənin necə işlədiyini nümayiş etdirək:
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 4
İkili operatorlardan əlavə Java-da birlik arifmetik operatorlar var.
Cədvəl 2. Unar arifmetik operatorlar:
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 4Birar artı və minus nümunəsi:
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 Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 6
Artırma və azaltma əməliyyatları mahiyyətcə sadədir. Birinci halda dəyişən 1 artır, ikincidə isə 1 azalır. Nümunə aşağıdadır:
int x = 9;
x++;
System.out.println(x); // 10

int y = 21;
y--;
System.out.println(y); // 20
Bu əməliyyatların iki növü var - postfiks və prefiks. Birinci halda operator dəyişəndən sonra, ikinci halda isə dəyişəndən əvvəl yazılır. Yeganə fərq artırma və ya azaltma əməliyyatının yerinə yetirildiyi zamandır. Aşağıdakı cədvəldə nümunə və təsvir. Deyək ki, bizim dəyişənimiz var:
int a = 2;
Sonra:
Cədvəl 3. Artırma-azaltma operatorları:
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 5Nümayiş:
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 8
Arifmetika ilə yanaşı, müqayisə əməliyyatları da var (iki ədəddən). Nəticə həmişə doğru və ya yalan olacaq ( doğru / yanlış ).
Cədvəl 4. Müqayisə operatorları
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 9Nümunələr:
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);
Nümayiş:
Java Operatorlarına Giriş: Məntiqi, Arifmetik, Bitwise - 10

Java-da məntiqi əməliyyatlar

Onların hər birinin məntiqi əməliyyatlarına və həqiqət cədvəllərinə baxaq:
  • inkar əməliyyatı ( NOT);
  • birləşmə əməliyyatı, məntiqi VƏ ( AND);
  • disjunksiya əməliyyatı, məntiqi OR ( OR);
  • modul əlavə əməliyyatı, eksklüziv OR ( XOR).
İnkar operatoru unardır və tək operanda tətbiq olunur. Bütün digər əməliyyatlar binardır. Bu əməliyyatların həqiqət cədvəllərini nəzərdən keçirək. Burada 0 Java-da false- in , 1 isə true -un ekvivalentidir .
Cədvəl 5. İnkar operatoru Həqiqət Cədvəli (YOX)
Знакомство с операторами Java: логические, арифметические, побитовые - 7
Cədvəl 6. Bağlayıcı operatorun həqiqət cədvəli (AND)
Знакомство с операторами Java: логические, арифметические, побитовые - 8
Cədvəl 7. Ayrılma operatorunun həqiqət cədvəli (OR)
Знакомство с операторами Java: логические, арифметические, побитовые - 9
Cədvəl 8. Modul toplama operatorunun həqiqət cədvəli (XOR)
Знакомство с операторами Java: логические, арифметические, побитовые - 10Java eyni məntiqi əməliyyatlara malikdir:
  • !— inkar operatoru;
  • &&— məntiqi AND operatoru (qısa);
  • ||— məntiqi OR operatoru (qısa);
  • &— bit üzrə AND operatoru;
  • |— bit üzrə OR operatoru;
  • ^— bit üzrə eksklüziv OR operatoru.
Gəlin, bütün həqiqət cədvəllərini Java koduna çevirərkən, bir az aşağıda bit və stenoqrafiya operatorları arasındakı fərqə baxaq:
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 proqram göstərəcək: NÜMUNƏ DEYİL: YANLIŞ DEYİL = doğru DEYİL = false VƏ NÜMUNƏ: false AND false = false false AND true = false true AND false = false true AND true = true OR MISPLE: false OR false = false false OR true = doğru doğru və ya yalan = doğru doğru VEYA doğru = doğru XOR NÜMUNƏ: yanlış XOR false = yanlış yalan XOR doğru = doğru doğru XOR yanlış = doğru doğru XOR doğru = yanlış Məntiqi operatorlar yalnız booleandəyişənlərə tətbiq edilir. Bizim vəziyyətimizdə biz onları birbaşa dəyərlərə tətbiq etdik, lakin siz onları dəyişənlərlə də istifadə edə bilərsiniz boolean:
Знакомство с операторами Java: логические, арифметические, побитовые - 15
Və ifadələrə boolean:
Знакомство с операторами Java: логические, арифметические, побитовые - 16
İndi bizdə stenoqrafik operatorlar ( &&, ||) və oxşar bit operatorları ( &, |) var. Onların arasındakı fərq nədir? Birincisi, bit istiqamətində tam ədədlərə tətbiq oluna bilər. Bu barədə bir az sonra danışacağıq. İkincisi, bəziləri qısaldılmışdır, bəziləri isə yox. Abreviaturanın nəyə bənzədiyini başa düşmək üçün ifadəyə baxaq:

false AND x = ?
true OR x = ?
Bu xistənilən Boolean dəyərini qəbul edə bilər. Və ümumiyyətlə, məntiq qanunlarına və həqiqət cədvəllərinə görə, x doğru və ya yalan olmasından asılı olmayaraq , birinci ifadənin nəticəsi yalan , ikincinin nəticəsi isə doğru olacaqdır . Bax.
Знакомство с операторами Java: логические, арифметические, побитовые - 17
Bəzən ifadənin nəticəsi birinci operanddan hesablana bilər. Qısaldılmış operatorları &&||. Yuxarıda təsvir edilənlərə bənzər ifadələrdə onlar ikinci operandın dəyərini qiymətləndirmirlər. Budur kiçik bir nümunə:
Знакомство с операторами Java: логические, арифметические, побитовые - 18
Stenoqrafiya operatorlarında ifadənin ikinci hissəsi qiymətləndirilmir. Ancaq bu, yalnız ifadənin nəticəsi birinci operanddan aydın olduqda baş verir.

Java-da bitwise əməliyyatları

Yaxşı, burada ən maraqlı hissəyə gəlirik: bit əməliyyatları. Adından da göründüyü kimi bunlar bitlər üzərində yerinə yetirilən əməliyyatlardır. Ancaq bu mövzuya keçməzdən əvvəl əlaqəli sahələr haqqında danışmağa dəyər.

Ədədlərin ikilik say sistemində təsviri

Nömrələr, proqramdakı hər hansı digər məlumat kimi, ikili kodda kompüter yaddaşında saxlanılır. İkili kod sıfırlar və birlər toplusudur. Hər bir sıfır və ya bir bit adlanan məlumat vahidini təmsil edir.

Vikipediyaya görə:

Bit (ingilis dilindən ikili rəqəm - ikilik rəqəm; həmçinin sözlər üzərində oyun: ingiliscə bit - parça, hissəcik) məlumat miqdarının ölçü vahididir. 1 bit məlumat iki məna daşıya bilən simvol və ya siqnaldır: açıq və ya sönük, bəli və ya yox, yüksək və ya aşağı, yüklənmiş və ya yüksüz; binar sistemdə 1 (bir) və ya 0 (sıfır) olur.

Bitwise operatorları hansı verilənlərlə işləyir?

Java-da bitwise əməliyyatları yalnız tam ədədlər üzərində aparılır. Tam ədədlər kompüter yaddaşında bitlər dəsti kimi saxlanılır. Deyə bilərik ki, kompüter istənilən məlumatı ikilik say sisteminə (bitlər toplusuna) çevirir və yalnız bundan sonra onunla qarşılıqlı əlaqədə olur. Bəs ikili say sistemi necə işləyir? Onluq say sistemində cəmi 10 simvolumuz var: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Saymaq üçün bu simvollardan istifadə edirik. 9-dan sonra 10, 19-dan sonra - 20, 99-dan sonra - 100, 749-dan sonra - 750 gəlir. Yəni biz mövcud 10 simvolun birləşməsindən istifadə edirik və onlardan “sıfırdan nahara qədər” saymaq üçün istifadə edə bilərik. İkilik say sistemində on simvol əvəzinə cəmi iki - 0, 1 olur. Amma bu simvolları onluq sistemdəki kimi eyni prinsipə uyğun birləşdirərək qeyri-müəyyən müddətə saya bilərik.
Onluq və ikilik sistemdə 0-dan 15-ə qədər saymağı nümayiş etdirək:
Знакомство с операторами Java: логические, арифметические, побитовые - 11Gördüyünüz kimi, hər şey o qədər də mürəkkəb deyil. Bitlərə əlavə olaraq, digər tanış məlumat vahidləri də var - bayt , kilobayt , meqabayt , gigabayt və s. Yəqin ki , 1 baytda 8 bit olduğunu bilirsiniz . Bunun mənası nədi? Bu o deməkdir ki, ard-arda 8 bit 1 bayt tutur. Baytların nə ola biləcəyinə dair nümunələr:

00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Bir baytda mümkün təkrarlanmayan bit birləşmələrinin sayı 256-dır (2 8 = 256). Ancaq Java-ya daha yaxın qayıdaq. Belə bir tam məlumat növü var - byte. Bu tip -128-dən 127-yə qədər qiymətlər ala bilər və kompüter yaddaşındakı bir nömrə tam olaraq 8 bit və ya 1 bayt tutur. byteBu tip bir nömrə tam olaraq 1 kompüter yaddaşını tutur . Və burada adlar təsadüfən üst-üstə düşmür. Xatırladığımız kimi, 1 bayt 256 fərqli dəyəri saxlaya bilir. Və bir növ nömrə byte256 fərqli dəyər ala bilər (128 mənfi, 127 müsbət və 1 sıfır). Hər bir nömrə dəyərinin bytesəkkiz bitdən ibarət unikal dəsti var. Bu, təkcə tipdə deyil byte, bütün inteqral növlərdə belədir. Növ byteən kiçik kimi nümunə olaraq verilmişdir. Aşağıdakı cədvəl Java-nın bütün tam növlərini və onların tutduğu yaddaş yerini göstərir: Знакомство с операторами Java: логические, арифметические, побитовые - 12Növü nəzərdən keçirin int. O, 2147483648 mənfi dəyər, 2147483647 müsbət dəyər və bir sıfır saxlaya bilər. Ümumi:

2147483648 + 2147483647 + 1 = 4294967296.
Bu tip kompüter yaddaşında 32 bit yer tutur. 32 sıfır və bir dəstdən mümkün birləşmələrin sayı:
232 = 4294967296.
Növün tuta biləcəyi dəyərlərin sayı ilə eyni ədəd int. Bu, sadəcə bir məlumat növünün dəyər diapazonu ilə onun ölçüsü (yaddaşdakı bitlərin sayı) arasındakı əlaqənin nümayişidir. Java-da istənilən növ istənilən sayda binar sistemə çevrilə bilər. Gəlin görək Java dilindən istifadə etməklə bunun nə qədər asan həyata keçirilə bilər. Tip nümunəsindən öyrənəcəyik int. Bu növün öz sarğı sinfi var - Integer. Və onun toBinaryStringbizim üçün bütün işləri görəcək biri var:
Знакомство с операторами Java: логические, арифметические, побитовые - 21
Voila - bu o qədər də mürəkkəb deyil. Ancaq yenə də bir şeyi aydınlaşdırmaq lazımdır. intnömrə 32 bit alır. Amma yuxarıdakı misalda 10 rəqəmini çap etdikdə konsolda 1010 görürük.Bu ona görədir ki, aparıcı sıfırlar çap olunmur. Əgər onlar göstərilsəydi, 1010 əvəzinə biz konsolda 000000000000000000000000000001010-u görərdik. Lakin qavrayış asanlığı üçün bütün aparıcı sıfırlar buraxılmışdır. Özünüzə sual verməyincə o qədər də çətin deyil: mənfi ədədlər necə? O, məlumatı yalnız ikili sistemdə qəbul edir. Belə çıxır ki, mənfi işarəni də ikili kodla yazmaq lazımdır. Bu, birbaşa və ya tamamlayıcı koddan istifadə etməklə edilə bilər.

Birbaşa kod

Ən əhəmiyyətli bitin (ən soldakı bit) ədədin işarəsinə ayrıldığı ikilik say sistemində ədədləri təmsil etmək üsulu. Rəqəm müsbətdirsə, ən soldakı bitə 0, mənfi olduqda - 1 yazılır.
Nümunə olaraq 8 bitlik rəqəmdən istifadə edərək buna baxaq:
Знакомство с операторами Java: логические, арифметические, побитовые - 13Yanaşma sadədir və prinsipcə başa düşüləndir. Bununla belə, onun mənfi cəhətləri var: riyazi əməliyyatları yerinə yetirməkdə çətinliklər. Məsələn, mənfi və müsbət ədədlərin əlavə edilməsi ilə. Əlavə manipulyasiyalar aparılmayınca onları qatlamaq olmaz.

Əlavə kod

Əlavə koddan istifadə etməklə siz birbaşa kodun mənfi cəhətlərindən qaça bilərsiniz. Ədədin əlavə kodunu əldə etmək üçün sadə bir alqoritm var. Gəlin -5 rəqəminin əlavə kodunu əldə etməyə çalışaq. Bu ədədi ikili say sistemində ikinin tamamlayıcı kodundan istifadə edərək təmsil edək. Addım 1. Birbaşa koddan istifadə edərək mənfi ədədin təsvirini əldə edirik. -5 üçün 10000101 olacaq. Addım 2. İşarə rəqəmindən başqa bütün rəqəmləri çevirin. Bütün sıfırları birlərlə, ən soldakı bitdən başqa hər yerdə sıfırları sıfırlarla əvəz edək.

10000101 => 11111010
Addım 3. Yaranan dəyərə birini əlavə edin:

11111010 + 1 = 11111011
Hazır. İkili say sistemində ikinin tamamlayıcı kodundan istifadə edərək -5 qiymətini aldıq. Bu, aşağıdakı materialı başa düşmək üçün vacibdir, çünki Java mənfi ədədləri bitlərdə saxlamaq üçün ikinin tamamlayıcı kodundan istifadə edir.

Bitwise əməliyyatlarının növləri

İndi bütün girişlərlə məşğul olduq, gəlin Java-da bitwise əməliyyatları haqqında danışaq. Tam ədədlər üzərində bit üzrə əməliyyat aparılır və onun nəticəsi tam ədəddir. Prosesdə ədəd ikilik sistemə çevrilir, hər bit üzərində əməliyyat yerinə yetirilir və nəticə yenidən ondalığa çevrilir. Əməliyyatların siyahısı aşağıdakı cədvəldə verilmişdir: Знакомство с операторами Java: логические, арифметические, побитовые - 14Artıq aşkar etdiyimiz kimi, ədədlər bitlər dəsti kimi təqdim edilə bilər. Bitwise əməliyyatları bu cür təsvirin hər bir biti üzərində əməliyyatları yerinə yetirir. götürək NOT, AND, OR, XOR. Xatırladaq ki, bu yaxınlarda biz həqiqət cədvəllərinə yalnız məntiqi operandlar üçün baxmışdıq. Bu zaman eyni əməliyyatlar tam ədədin hər bitinə tətbiq edilir.

Bitwise unar operator NOT ~

Bu operator bütün sıfırları birlərlə, hamısını isə sıfırlarla əvəz edir. Tutaq ki, bizdə 10 rəqəmi ondalıq qeydlərdə var. Binar sistemdə bu ədəd 1010-dur. Bu ədədə birlik bitwise inkar operatorunu tətbiq etsək, belə bir şey əldə edirik: Знакомство с операторами Java: логические, арифметические, побитовые - 15Java kodunda onun necə göründüyünə nəzər salaq:
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));
}
İndi konsolda nə göstərildiyinə baxaq:
Знакомство с операторами Java: логические, арифметические, побитовые - 25
Birinci sətirdə ikilik say sistemində sıfırlar olmadan dəyəri əldə etdik. Biz onları görməsək də, oradadırlar. Bu, bütün bitlərin tərs olanlara çevrildiyi ikinci xətt ilə sübut olunur. Buna görə də biz çoxlu aparıcı vahidləri görürük. Bunlar birinci sətirdə çap edildikdə tərtibçi tərəfindən nəzərə alınmayan əvvəlki aparıcı sıfırlardır. Budur, aydınlıq üçün aparıcı sıfırları göstərən kiçik bir proqram.
Знакомство с операторами Java: логические, арифметические, побитовые - 26

Bitwise AND operatoru

Bu operator iki nömrəyə aiddir. ANDHər ədədin bitləri arasında əməliyyat həyata keçirir . Nümunəyə baxaq: Знакомство с операторами Java: логические, арифметические, побитовые - 16Bu əməliyyat iki ədəd üzərində aparılır. Java kodundakı nümunə:
Знакомство с операторами Java: логические, арифметические, побитовые - 28

Bitwise OR operator

OR iki rəqəmə aiddir. O, hər nömrənin bitləri arasında OR əməliyyatını yerinə yetirir: Знакомство с операторами Java: логические, арифметические, побитовые - 17İndi gəlin bunun IDEA-da necə görünəcəyinə nəzər salaq:
Знакомство с операторами Java: логические, арифметические, побитовые - 30

Bitwise əməliyyat, eksklüziv OR (XOR)

Gəlin eyni nümunəyə baxaq, lakin yeni əməliyyatla: Знакомство с операторами Java: логические, арифметические, побитовые - 18Nümunə kodu:
Знакомство с операторами Java: логические, арифметические, побитовые - 32

Bit istiqamətində sola sürüşdürün

Bu operator iki operanda tətbiq olunur, yəni əməliyyatda x << ynömrənin bitləri mövqeləri sola xkeçirəcək . yBunun mənası nədi? Əməliyyat nümunəsinə baxaq.Əməliyyatın 10 << 1 Знакомство с операторами Java: логические, арифметические, побитовые - 19nəticəsi ondalıq sistemdə 20 rəqəmi olacaq. Yuxarıdakı diaqramdan göründüyü kimi, bütün bitlər sola 1-ə sürüşdürülür. Bu əməliyyat zamanı ən əhəmiyyətli bitin (ən soldakı bit) dəyəri itirilir. Və ən az əhəmiyyətli bit (ən sağdakı bit) sıfırla doldurulur. Bu əməliyyat haqqında nə deyə bilərsiniz?
  1. XNömrənin bitlərini Nsola keçərək, rəqəmi X2 N -ə vururuq .

    Budur bir nümunə:

    Знакомство с операторами Java: логические, арифметические, побитовые - 34
  2. Amma! 1 dəyəri olan bit ən sol mövqeyi tutarsa, nömrənin işarəsi dəyişə bilər.

  3. Əgər siz qeyri-müəyyən müddətə sola keçirsəniz, rəqəm sadəcə olaraq 0-a çevriləcək. Gəlin 2 və 3-cü bəndləri nümayiş etdirək:

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

Bitwise sağa sürüşdürün

Bu operator iki operanda tətbiq edilir. Bunlar. əməliyyatda x >> yədədin bitləri mövqeləri sağa xkeçirəcək . yBaşqa bir misala baxaq. Əməliyyatı sxematik təhlil edək 10 >> 1. 10 rəqəminin bütün bitlərini bir mövqedən sağa keçirək: Знакомство с операторами Java: логические, арифметические, побитовые - 20Köçürmə əməliyyatı zamanı biz düzgün bitləri itiririk. Sadəcə yox olurlar. Ən soldakı bit ədədin işarəsidir (0 müsbət, 1 mənfi). Buna görə də, son dəyərdə orijinal nömrədəki kimi yerləşdirilir. Mənfi nömrə ilə misal: Знакомство с операторами Java: логические, арифметические, побитовые - 21Ən sağdakı bit itirilir, ən soldakı bit isə nömrənin fəxri əlaməti olaraq orijinal nömrədən kopyalanır. Bütün bunları IDEA-da necə etmək olar? Prinsipcə, mürəkkəb bir şey yoxdur, sadəcə götürün və köçürün:
Знакомство с операторами Java: логические, арифметические, побитовые - 38
İndi. Sağa sürüşdürülmüş rəqəmlər haqqında nə deyə bilərsiniz? Onlar 2-yə bölünür. Hər dəfə bir biti sağa sürüşdürdükdə, orijinal ədədi 2-yə bölürük. Əgər ədəd 2-yə bölünmürsə, nəticə mənfi sonsuzluğa (aşağıya) yuvarlaqlaşdırılacaq. Amma bu, yalnız bitləri tam olaraq 1-ə köçürsək işləyir. Və əgər 2 bitə, 4-ə bölün. 3 bitə, 8-ə bölün. 4 bitə, 16-ya bölün. Baxın? X2-nin səlahiyyətləri... Ədədi bitlərlə sağa köçürdükdə rəqəmi 2-nin 2-nin qüvvəsinə Nbölürük . Nümayiş: XN
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);
    }

   }

}
Burda nə baş verir?
  1. i dəyişəninin 1-dən 10-a qədər artırıldığı dövrə.

  2. Hər iterasiyada 2 dəyər hesablayırıq:
    • shiftOperationResult2048 rəqəminin i bit sağa sürüşdürülməsinin nəticəsini dəyişənə yazırıq;

    • devideOperationResult2048 rəqəmini i gücünə 2-yə böldükdən sonra çıxan nəticəni dəyişənə yazırıq .

  3. Alınan iki dəyəri cüt-cüt göstəririk.

Proqramın icrasının nəticəsi belədir: 1024 - 1024 512 - 512 256 - 256 128 - 128 64 - 64 32 - 32 16 - 16 8 - 8 4 - 4 2 - 2

Sıfır doldurma ilə bit istiqamətində sağa sürüşdürün

Normal sağa sürüşdürmə rəqəmin işarəsini saxlasa da (ən əhəmiyyətli bit öz dəyərini saxlayır), sıfır doldurma sağa sürüşdürmə etmir. Və ən əhəmiyyətli bit sıfırla doldurulur. Gəlin görək nə kimi görünür: Знакомство с операторами Java: логические, арифметические, побитовые - 22

Java-da əməliyyatların üstünlüyü

Riyaziyyat kimi Java da əməliyyatların üstünlüyünə malikdir. Aşağıdakı cədvəl nəzərdən keçirdiyimiz əməliyyatların prioritetini (ən yüksəkdən ən aşağıya) göstərir. Знакомство с операторами Java: логические, арифметические, побитовые - 23

Faydalı istifadə nümunələri

Ədədin paritetinin müəyyən edilməsi

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

Massivdə maksimum elementin tapılması

Знакомство с операторами Java: логические, арифметические, побитовые - 25Minimum elementi tapmaq üçün müqayisə işarəsini lazımi yerdə dəyişmək kifayətdir.
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION