JavaRush /Блоги Java /Random-TG /Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битвӣ...

Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битвӣ

Дар гурӯҳ нашр шудааст
Биёед дар бораи амалиётҳо дар Java сӯҳбат кунем: ададӣ, мантиқӣ, битвӣ. Ин як заминаи назариявӣ аст, ки бешубҳа барои омӯхтани барномасозӣ зарур аст. Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 1

Намудҳои операторҳо дар Java кадомҳоянд?

Барои ҳама гуна амалиёт ба мо ҳадди аққал ду чиз лозим аст:
  • оператор;
  • операнд.
Намунаи оператор як плюси оддӣ дар амалиёти илова кардани ду рақам хоҳад буд. Ва рақамҳои ба ҳамдигар иловашуда дар ин ҳолат операндҳо хоҳанд буд. Ҳамин тариқ, мо бо ёрии операторҳо дар як ё якчанд операндҳо амалҳоро иҷро мекунем. Операторҳое, ки дар ду операнд амал мекунанд, бинарӣ номида мешаванд. Масалан, илова кардани ду рақам. Операторҳое, ки дар як операнд амал мекунанд, унарӣ номида мешаванд. Масалан, як минуси ягона.

Операторҳои Java дар курси JavaRush

Якчанд лексияҳо ба операторҳои Java дар сатҳи чоруми квести аввал - Java Syntax бахшида шудаанд . Аз ҷумла, операторҳои шартӣ ба монанди boolean . Курс аз 22 вазифа иборат аст, ки ба шумо дар фаҳмидани кори операторҳои муқоисавӣ, операторҳои шартӣ ва операторҳои мантиқӣ кӯмак мекунад.

Амалиётҳои рақамӣ дар Java

Амалиёти маъмултарине, ки барномасозон дар рақамҳо иҷро мекунанд, ин таъин кардани арзиши ададӣ ба тағирёбанда мебошад. Вай, мисли оператор, =ба шумо шинос аст:
int a = 1;
int b = 2;
int c = 3;
Амалҳои арифметикӣ низ мавҷуданд. Онҳо бо истифода аз операторҳои арифметикии бинарӣ иҷро карда мешаванд:
Љадвали 1. Операторњои арифметикии бинарї
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 2Чор оператори аввал набояд ягон саволе ба миён оваранд: ҳама чиз ҳамон тавре ки дар математика аст. Оператори охирин, қисми боқимондаи тақсим низ ҳеҷ чизи хеле мураккабро иҷро намекунад. Масалан, агар 24-ро ба 7 тақсим кунем, мо 3 адади бутун ва 3 боқимонда мегирем. Боқимонда ин оператор бармегардад:
System.out.println(24 % 7); // prints 3
Инҳоянд мисолҳо аз сайти расмии ҳуҷҷатгузории Oracle: Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 3Ин барнома инҳоро мебарорад: 1 + 2 = 3 3 - 1 = 2 2 * 2 = 4 4 / 2 = 2 2 + 8 = 10 10 % 7 = 3 Java ба шумо имкон медиҳад якҷоя кардан: масалан, супоришҳои операторҳо ва операторҳои арифметикӣ. Биёед як мисолро дида бароем:
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
Дар ин ҷо мо тағирёбандаро муайян кардем xва ба он арзиши сифрро додем. xМинбаъд, дар ҳар сатр мо ба маблағи арзиши ҷории тағирёбанда ва як арзиш таъин мекунем x. Дар шарҳҳо барои ҳар як сатр шарҳҳо мавҷуданд. Ин тартиб афзоиш ё афзоиш додани тағирёбанда номида мешавад. Амалиёти афзоянда аз мисоли дар боло овардашуда метавонад бо амалиёти шабеҳ бо истифода аз омезиши операторҳо иваз карда шавад:
int x = 0;
x += 1; // x = 0 + 1 => x = 1
x += 1; // x = 1 + 1 => x = 2
x += 1; // x = 2 + 1 => x = 3
Шумо метавонед оператори таъинотро бо ягон оператори арифметикӣ якҷоя кунед:
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;
Биёед нишон диҳем, ки мисоли охирин чӣ гуна кор мекунад:
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 4
Илова ба операторҳои бинарӣ, Java дорои операторҳои арифметикии унарӣ мебошад.
Ҷадвали 2. Операторҳои арифметикии ягона:
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 4Намунаи плюс ва минуси ягона:
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: мантиқӣ, арифметикӣ, битӣ - 6
Амалиётҳои афзоиш ва камкунӣ аслан соддаанд. Дар ҳолати аввал, тағирёбанда ба 1 зиёд мешавад, дар дуюм, тағирёбанда 1 кам карда мешавад. Мисоли зерин:
int x = 9;
x++;
System.out.println(x); // 10

int y = 21;
y--;
System.out.println(y); // 20
Ду намуди ин амалиёт вуҷуд дорад - постфикс ва префикс. Дар ҳолати аввал оператор пас аз тағирёбанда, дар ҳолати дуюм пеш аз тағирёбанда навишта мешавад. Ягона фарқият дар он аст, ки амалиёти афзоиш ё камкунӣ иҷро карда мешавад. Намуна ва тавсиф дар ҷадвали зер. Фарз мекунем, ки мо як тағирёбанда дорем:
int a = 2;
Сипас:
Љадвали 3. Операторњои афзоиш-камкунї:
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 5Намоиш:
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 8
Ба гайр аз арифметика, амалхои мукоиса (аз ду адад) мавчуданд. Натиҷа ҳамеша дуруст ё нодуруст хоҳад буд ( true / false ).
Љадвали 4. Операторњои муќоиса
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 9Мисолҳо:
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);
Намоиш:
Муқаддима ба операторҳои Java: мантиқӣ, арифметикӣ, битӣ - 10

Амалиёти мантиқӣ дар Java

Биёед ба амалҳои мантиқӣ ва ҷадвалҳои ҳақиқати ҳар яки онҳо назар андозем:
  • амалиёти радкунӣ ( NOT);
  • амалиёти пайвандак, мантиқии ВА ( AND);
  • амалиёти дизюнксия, мантиқи Ё ( OR);
  • амалиёти илова модули, истисноии Ё ( XOR).
Оператори радкунӣ якранг аст ва ба як операнд татбиқ мешавад. Ҳамаи амалҳои дигар дуӣ мебошанд. Биёед ҷадвалҳои ҳақиқати ин амалҳоро дида бароем. Дар ин ҷо 0 муодor бардурӯғ дар Java аст ва 1 муодor ҳақиқӣ аст .
Ҷадвали 5. Ҷадвали ҳақиқати оператори радкунӣ (НЕ)
Знакомство с операторами Java: логические, арифметические, побитовые - 7
Ҷадвали 6. Ҷадвали ҳақиқати оператори конъюнксия (AND)
Знакомство с операторами Java: логические, арифметические, побитовые - 8
Ҷадвали 7. Ҷадвали ҳақиқати оператори дизъюнксия (OR)
Знакомство с операторами Java: логические, арифметические, побитовые - 9
Ҷадвали 8. Ҷадвали ҳақиқати оператори иловаи модулҳо (XOR)
Знакомство с операторами Java: логические, арифметические, побитовые - 10Java ҳамон амалҳои мантиқӣ дорад:
  • !— оператори радкунӣ;
  • &&— оператори мантиқӣ ВА (кӯтоҳ);
  • ||— оператори мантиқии Ё (кӯтоҳ);
  • &— оператори битӣ ВА;
  • |— оператори битӣ OR;
  • ^— оператори истисноии OR.
Биёед фарқи байни операторҳои бит ва стенографияро каме бештар дар зер бубинем, дар ҳоле ки биёед ҳамаи ҷадвалҳои ҳақиқатро ба codeи Java табдил диҳем:
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();
   }
}
Ин барнома намоиш медиҳад: НЕ МИСОЛ: ДУРӮҒ НЕ = ҳақиқӣ НЕСТ = бардурӯғ ВА МИСОЛ: бардурӯғ ва бардурӯғ = бардурӯғ ва ҳақиқӣ = бардурӯғ дуруст ва бардурӯғ = бардурӯғ ҳақиқӣ ВА ҳақиқӣ = ҳақиқӣ Ё МИСОЛ: бардурӯғ ё бардурӯғ = бардурӯғ ё рост. = ҳақиқӣ ҳақиқӣ Ё бардурӯғ = ҳақиқӣ ҳақиқӣ Ё ҳақиқӣ = ҳақиқӣ XOR МИСОЛ: бардурӯғ XOR бардурӯғ = бардурӯғ XOR ҳақиқӣ = ҳақиқӣ ҳақиқӣ XOR бардурӯғ = ҳақиқӣ ҳақиқӣ XOR ҳақиқӣ = бардурӯғ Операторҳои мантиқӣ танҳо ба booleanтағирёбандаҳо татбиқ мешаванд. Дар ҳолати мо, мо онҳоро мустақиман ба арзишҳо татбиқ кардем, аммо шумо инчунин метавонед онҳоро бо booleanтағирёбандаҳо истифода баред:
Знакомство с операторами Java: логические, арифметические, побитовые - 15
Ва ба booleanибораҳои:
Знакомство с операторами Java: логические, арифметические, побитовые - 16
Ҳоло мо операторҳои стенография ( &&, ||) ва операторҳои шабеҳи битавӣ ( &, |) дорем. Фарқи байни онҳо чӣ гуна аст? Аввалан, ба таври бит метавонад ба ададҳои бутун татбиқ карда шавад. Мо дар ин бора каме дертар гап мезанем. Ва дуюм, баъзеҳо ихтисор шудаанд, дар ҳоле ки дигарон не. Барои фаҳмидани он ки аббревиатура чӣ гуна аст, биёед ба ибораи зерин назар андозем:

false AND x = ?
true OR x = ?
Ин xметавонад ҳама гуна арзиши мантиқиро гирад. Ва дар маҷмӯъ, тибқи қонунҳои мантиқ ва ҳақиқати ҷадвал, новобаста аз он, ки он x дуруст аст ё дурӯғ , натиҷаи ифодаи аввал нодуруст ва натиҷаи дуюм дуруст хоҳад буд . Нигоҳ кунед.
Знакомство с операторами Java: логические, арифметические, побитовые - 17
Баъзан натиҷаи ифодаро аз операнди аввал ҳисоб кардан мумкин аст. Ин аст он чизе, ки операторҳои кӯтоҳшуда &&ва ||. Дар ифодаҳое, ки дар боло тавсиф шудаанд, онҳо арзиши операнди дуюмро баҳо намедиҳанд. Инак як мисоли хурд:
Знакомство с операторами Java: логические, арифметические, побитовые - 18
Дар мавриди операторҳои стенография қисми дуюми ифода баҳо дода намешавад. Аммо ин танҳо вақте рӯй медиҳад, ки натиҷаи ифода аллакай аз операнди аввал аён бошад.

Амалиётҳои битвӣ дар Java

Хуб, мо ба қисми ҷолибтарин мерасем: амалиёти битвӣ. Тавре ки аз ном бармеояд, ин амалиётҳое мебошанд, ки дар битҳо иҷро карда мешаванд. Аммо пеш аз он ки мо ба ин мавзӯъ ғарқ шавем, бояд дар бораи соҳаҳои алоқаманд сӯҳбат кунем.

Намоиши ададҳо дар системаи ҳисобҳои дуӣ

Рақамҳо мисли ҳама гуна иттилооти дигари барнома дар хотираи компютер бо рамзи дуӣ нигоҳ дошта мешаванд. Рамзи дуӣ маҷмӯи сифрҳо ва якҳо мебошад. Ҳар як сифр ё як воҳиди иттилоотро ифода мекунад, ки бит номида мешавад.

Бино ба Википедиа:

Бит (аз забони инглисии binary digit - рақами дуӣ; инчунин бозӣ бар калимаҳо: bit - порча, зарра) воҳиди ченкунии ҳаҷми иттилоот аст. 1 бит информатсия рамз ё сигналест, ки метавонад ду маъно дошта бошад: фаъол ё хомӯш, ҳа ё не, баланд ё паст, заряднок ё заряднашуда; дар системаи дуӣ он 1 (як) ё 0 (сифр) аст.

Операторҳои битвӣ бо кадом намуди маълумот кор мекунанд?

Амалиёти битавӣ дар Java танҳо дар ададҳои бутун иҷро карда мешаванд. Ададҳои бутун дар хотираи компютер ҳамчун маҷмӯи битҳо нигоҳ дошта мешаванд. Метавонем бигӯем, ки компютер ҳама гуна информатсияро ба системаи шумораҳои дуӣ (маҷмӯи битҳо) табдил медиҳад ва танҳо баъд бо он ҳамкорӣ мекунад. Аммо системаи шумораҳои дуӣ чӣ гуна кор мекунад? Дар системаи ададҳои даҳӣ мо ҳамагӣ 10 аломат дорем: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Мо барои ҳисоб кардан аз ин рамзҳо истифода мебарем. Пас аз 9 10, пас аз 19 - 20, пас аз 99 - 100, пас аз 749 - 750 меояд. Яъне мо омезиши 10 аломати мавҷударо истифода мебарем ва метавонем онҳоро барои ҳисоб кардани “аз сифр то нисфирӯзӣ” истифода барем. Дар системаи шумораҳои дуӣ ба ҷои даҳ аломат танҳо ду - 0, 1 мавҷуд аст. Аммо ин аломатҳоро мувофиқи ҳамон принсипе, ки дар системаи даҳӣ муттаҳид мекунад, мо метавонем беохир ҳисоб кунем.
Биёед ҳисобкуниро аз 0 то 15 дар адади даҳӣ ва дуӣ нишон диҳем:
Знакомство с операторами Java: логические, арифметические, побитовые - 11Тавре ки шумо мебинед, ҳама чиз он қадар мураккаб нест. Ба ѓайр аз бит, воњидњои дигари шиноси иттилоот низ вуљуд доранд - byte , килоbyte , мегаbyte , гигаbyte ва ѓайра. Шумо эҳтимол медонед, ки дар 1 byte 8 бит мавҷуд аст . Ин чӣ маъно дорад? Ин маънои онро дорад, ки 8 бит дар як саф 1 byteро ишғол мекунад. Инҳоянд мисолҳое, ки byteҳо чӣ гуна буда метавонанд:

00000000 - 1 byte
10110010 - 1 byte
01011011 - 1 byte
Шумораи комбинатсияҳои эҳтимолии такрорнашавандаи битҳо дар як byte 256 (2 8 = 256) аст. Аммо биёед ба Java наздиктар баргардем. Чунин навъи маълумоти бутун вуҷуд дорад - byte. Ин намуд метавонад аз -128 то 127 арзиш гирад ва як адад дар хотираи компютер маҳз 8 бит ё 1 byteро ишғол мекунад. Як адади ин намуд маҳз 1 byteхотираи компютерро ишғол мекунад. Ва дар ин ҷо номҳо тасодуфан мувофиқат намекунанд. Тавре ки мо дар хотир дорем, 1 byte метавонад 256 арзишҳои гуногунро нигоҳ дорад. Ва як рақами навъи byteметавонад 256 арзишҳои гуногунро (128 манфӣ, 127 мусбат ва 1 сифр) гирад. Ҳар як арзиши рақам byteмаҷмӯи беназири ҳашт бит дорад. Ин ҳолат на танҳо бо type byte, балки дар ҳама намудҳои интегралӣ аст. Навъи byteхурдтарин ҳамчун намуна оварда шудааст. Дар ҷадвали зер ҳамаи намудҳои бутуни Java ва фазои хотираи онҳо ишғолшуда нишон дода шудааст: Знакомство с операторами Java: логические, арифметические, побитовые - 12Навъи int. Он метавонад 2147483648 арзишҳои манфӣ, 2147483647 арзишҳои мусбат ва як сифрро нигоҳ дорад. Ҳамагӣ:

2147483648 + 2147483647 + 1 = 4294967296.
Ин намуд дар хотираи компютер 32 битро мегирад. Шумораи комбинатсияҳои имконпазир аз маҷмӯи 32 сифр ва якҳо ин аст:
232 = 4294967296.
Ҳамон рақаме, ки шумораи арзишҳое, ки навъ метавонад нигоҳ дошта бошад int. Ин танҳо як намоиши робитаи байни диапазони арзишҳои навъи маълумот ва андозаи он (шумораи битҳо дар хотира) аст. Ҳар як рақами ҳама намуди Java метавонад ба дуӣ табдил дода шавад. Биёед бубинем, ки ин корро бо истифода аз забони Java чӣ гуна осон кардан мумкин аст. Мо аз мисоли тип меомӯзем int. Ин навъи дорои синфи печонидани худ - Integer. Ва ӯ дорои як toBinaryString, ки тамоми корҳоро барои мо мекунад:
Знакомство с операторами Java: логические, арифметические, побитовые - 21
Voila - он қадар мураккаб нест. Аммо ба ҳар ҳол, чизеро равшан кардан лозим аст. intрақам 32 бит мегирад. Аммо вақте ки мо рақами 10-ро дар мисоли боло чоп мекунем, мо дар консол 1010-ро мебинем, зеро сифрҳои пешбаранда чоп намешаванд. Агар онҳо намоиш дода мешуданд, ба ҷои 1010, мо дар консол 000000000000000000000000000001010 мебинем. Аммо барои осонии дарк ҳамаи сифрҳои пешбаранда хориҷ карда мешаванд. То он даме, ки шумо аз худ бипурсед: дар бораи рақамҳои манфӣ чӣ гуфтан мумкин аст? Он маълумотро танҳо дар системаи бинарӣ қабул мекунад. Маълум мешавад, ки аломати минус низ бояд бо codeи дуӣ навишта шавад. Ин метавонад бо истифода аз рамзи мустақим ё иловагӣ анҷом дода шавад.

Рамзи мустақим

Усули ифодаи ададҳо дар системаи шумораҳои дуӣ, ки дар он битҳои муҳимтарин (бити чапи аз ҳама чап) ба аломати адад ҷудо карда мешаванд. Агар адад мусбӣ бошад, бит аз чапи чап 0, агар манфӣ бошад - 1 навишта мешавад.
Биёед инро бо истифода аз рақами 8-бит ҳамчун мисол бубинем:
Знакомство с операторами Java: логические, арифметические, побитовые - 13Муносибат оддӣ ва дар асл фаҳмо аст. Бо вуҷуди ин, он камбудиҳо дорад: душвориҳо дар иҷрои амалҳои математикӣ. Масалан, бо иловаи ададхои манфи ва мусбат. То он даме, ки коркарди иловагӣ анҷом дода нашавад, онҳоро печидан мумкин нест.

Рамзи иловагӣ

Бо истифода аз рамзи иловагӣ, шумо метавонед аз камбудиҳои рамзи мустақим канорагирӣ кунед. Барои ба даст овардани рамзи иловагии рақам як алгоритми оддӣ мавҷуд аст. Биёед кӯшиш кунем, ки рамзи иловагии рақами -5-ро гирем. Биёед ин ададро бо истифода аз рамзи комилкунандаи ду дар системаи шумораҳои дуӣ ифода кунем. Қадами 1. Мо бо истифода аз рамзи мустақим тасвири рақами манфиро ба даст меорем. Барои -5 он 10000101 хоҳад буд. Қадами 2. Ҳама рақамҳоро ба ҷуз рақами аломат табдил диҳед. Биёед ҳама сифрҳоро бо якҳо ва сифрҳоро дар ҳама ҷо ба ҷуз аз чапи чап иваз кунем.

10000101 => 11111010
Қадами 3. Ба арзиши натиҷавӣ якто илова кунед:

11111010 + 1 = 11111011
Тайёр. Мо бо истифода аз рамзи пурракунандаи ду дар системаи шумораҳои дуӣ арзиши -5 гирифтем. Ин барои фаҳмидани маводи зерин муҳим аст, зеро Java барои нигоҳ доштани рақамҳои манфӣ дар битҳо рамзи пурраи дуро истифода мебарад.

Намудҳои амалиёти битвӣ

Акнун, ки мо бо ҳама муқаддимаҳо сару кор кардем, биёед дар бораи амалиёти битвӣ дар Java сӯҳбат кунем. Амалиёти битӣ бо ададҳои бутун иҷро карда мешавад ва натиҷаи он адади бутун мебошад. Дар ин раванд, адад ба дуӣ табдил дода мешавад, дар ҳар як бит амалиёт анҷом дода мешавад ва натиҷа дубора ба даҳӣ табдил дода мешавад. Рӯйхати амалиётҳо дар ҷадвали зер оварда шудааст: Знакомство с операторами Java: логические, арифметические, побитовые - 14Тавре ки мо аллакай фаҳмидем, рақамҳоро метавон ҳамчун маҷмӯи битҳо муаррифӣ кард. Амалиёти битавӣ амалҳоро дар ҳар як бит аз чунин муаррифӣ иҷро мекунанд. Биёед NOT, AND, , OR, XOR. Ёдовар мешавем, ки мо ба наздикӣ ҷадвалҳои ҳақиқатро танҳо барои операндҳои мантиқӣ дида баромадем. Дар ин ҳолат, ҳамон амалҳо ба ҳар як бити бутун татбиқ карда мешаванд.

Оператори ягонаи битва НЕ ~

Ин оператор ҳамаи сифрҳоро бо якҳо ва ҳамаи сифрҳоро бо сифрҳо иваз мекунад. Фарз мекунем, ки мо рақами 10-ро дар аломати даҳӣ дорем. Дар бинарӣ ин рақам 1010 аст. Агар мо оператори яктарафаи инкоркуниро ба ин адад татбиқ кунем, мо чунин чизе мегирем: Знакомство с операторами Java: логические, арифметические, побитовые - 15Биёед бубинем, ки он дар codeи Java чӣ гуна аст:
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));
}
Акнун биёед бубинем, ки дар консол чӣ нишон дода шудааст:
Знакомство с операторами Java: логические, арифметические, побитовые - 25
Дар сатри аввал мо арзишро дар системаи шумораҳои дуӣ бидуни сифрҳои пешбаранда гирифтем. Гарчанде ки мо онҳоро намебинем, онҳо дар он ҷо ҳастанд. Ба ин хатти дуюм, ки дар он хамаи битхо ба битхои баръакс табдил ёфтаанд, шаходат медиханд. Аз ин чост, ки мо бисьёр звенохои пешкадамро мебинем. Инҳо сифрҳои қаблии пешбаранда мебошанд, ки ҳангоми чоп дар сатри аввал аз ҷониби компилятор нодида гирифта шудаанд. Дар ин ҷо як барномаи хурд аст, ки барои равшанӣ сифрҳои пешбарандаро низ нишон медиҳад.
Знакомство с операторами Java: логические, арифметические, побитовые - 26

Оператори битавӣ ВА

Ин оператор ба ду рақам дахл дорад. Он амалиётро ANDбайни битҳои ҳар як рақам иҷро мекунад. Биёед мисолро дида бароем: Знакомство с операторами Java: логические, арифметические, побитовые - 16Ин амалиёт дар ду рақам иҷро карда мешавад. Намуна дар codeи Java:
Знакомство с операторами Java: логические, арифметические, побитовые - 28

Оператори Bitwise OR

Ё ба ду рақам дахл дорад. Он амалиёти Ёро байни битҳои ҳар як рақам иҷро мекунад: Знакомство с операторами Java: логические, арифметические, побитовые - 17Акнун биёед бубинем, ки ин дар IDEA чӣ гуна хоҳад буд:
Знакомство с операторами Java: логические, арифметические, побитовые - 30

Амалиёти битавӣ, истисноӣ OR (XOR)

Биёед ҳамон мисолро бубинем, аммо бо амалиёти нав: Знакомство с операторами Java: логические, арифметические, побитовые - 18Рамзи мисол:
Знакомство с операторами Java: логические, арифметические, побитовые - 32

Гузариш ба чап

Ин оператор ба ду операнд дахл дорад, яъне дар амалиёт x << yбитҳои адад мавқеъро ба тарафи чап xиваз мекунанд . yИн чӣ маъно дорад? Биёед мисоли амалиётро дида бароем.Дар 10 << 1 Знакомство с операторами Java: логические, арифметические, побитовые - 19натиҷаи амал рақами 20 дар системаи даҳӣ хоҳад буд. Тавре ки шумо аз диаграммаи боло мебинед, ҳама битҳо ба тарафи чап ба 1 кӯчонида мешаванд. Дар ҷараёни ин амалиёт арзиши битҳои муҳимтарин (бити чапи аз ҳама чап) гум мешавад. Ва битҳои камтарин (бити росттарин) бо сифр пур карда мешавад. Шумо дар бораи ин амалиёт чӣ гуфта метавонед?
  1. Бо иваз кардани битҳои адад Xба Nбит ба чап, мо ададро Xба 2 N зарб мекунем .

    Инак як мисол:

    Знакомство с операторами Java: логические, арифметические, побитовые - 34
  2. Аммо! Аломати адад метавонад тағир ёбад, агар бит бо арзиши 1 мавқеи чапро ишғол кунад.

  3. Агар шумо ба таври номуайян ба чап гузаред, рақам танҳо ба 0 табдил меёбад. Биёед нуктаҳои 2 ва 3-ро нишон диҳем:

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

Ба самти бита ба рост гузаред

Ин оператор ба ду операнд дахл дорад. Онхое. дар амалиёт x >> y, битҳои рақам мавқеъро ба тарафи рост xиваз мекунанд . yБиёед мисоли дигарро дида бароем. Биёед амалиётро ба таври схематикӣ таҳлил кунем 10 >> 1. Биёед ҳамаи битҳои рақами 10-ро як мавқеъ ба тарафи рост гузаронем: Знакомство с операторами Java: логические, арифметические, побитовые - 20Ҳангоми амалиёти ивазкунӣ мо битҳои дурустро гум мекунем. Онҳо танҳо нопадид мешаванд. Бит аз чапи чап аломати адад аст (0 мусбат, 1 манфӣ). Аз ин рӯ, дар арзиши ниҳоӣ он ҳамон тавре ки дар рақами аслӣ ҷойгир карда шудааст. Мисол бо рақами манфӣ: Знакомство с операторами Java: логические, арифметические, побитовые - 21Бити росттарин гум шудааст ва бит аз чапи аз ҳама ҳамчун аломати ифтихории адад нусхабардорӣ мешавад. Ҳамаи инро дар IDEA чӣ гуна бояд кард? Аслан, ҳеҷ чизи мураккаб нест, танҳо онро гиред ва ҳаракат кунед:
Знакомство с операторами Java: логические, арифметические, побитовые - 38
Ҳозир. Шумо дар бораи рақамҳое, ки ба тарафи рост кӯчонида шудаанд, чӣ гуфта метавонед? Онҳо ба 2 тақсим мешаванд. Ҳар дафъае, ки мо як битро ба тарафи рост мегузарем, рақами аслиро ба 2 тақсим мекунем. Агар адад ба 2 тақсим нашавад, натиҷа ба суи беохирии минус (поён) мудаввар карда мешавад. Аммо ин танҳо дар сурате кор мекунад, ки мо битҳоро маҳз ба 1 иваз кунем. Ва агар ба 2 бит, ба 4 тақсим кунем. Ба 3 бит, ба 8 тақсим кунем. Ба 4 бит, ба 16 тақсим кунем. Бубинед? Қудратҳои 2... Вақте ки мо ададро ба бит ба тарафи рост гузаронем X, Nададро Xба 2 ба дараҷаи 2 тақсим мекунем N. Намоиш:
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);
    }

   }

}
Дар ин ҷо чӣ гап?
  1. Даврае, ки дар он тағирёбандаи i аз 1 то 10 зиёд карда мешавад.

  2. Ҳар як такрор мо 2 арзишро ҳисоб мекунем:
    • Мо ба таѓйирёбанда shiftOperationResultнатиљаи ба i бит ба тарафи рост гузаштани адади 2048-ро менависем;

    • devideOperationResultМо натиҷаи тақсими адади 2048-ро ба 2 ба қувваи i ба тағирёбанда менависем .

  3. Мо ду арзиши бадастомадаро дар ҷуфт нишон медиҳем.

Натиҷаи иҷрои барнома чунин аст: 1024 - 1024 512 - 512 256 - 256 128 - 128 64 - 64 32 - 32 16 - 16 8 - 8 4 - 4 2 - 2

Гузариш ба самти рост бо пуркунии сифр

Дар ҳоле ки тағирёбии муқаррарии рост аломати ададро нигоҳ медорад (бити муҳимтарин арзиши худро нигоҳ медорад), тағирёбии рости сифрӣ ин тавр намекунад. Ва каме муҳимтарин бо сифр пур карда мешавад. Биёед бубинем, ки он чӣ гуна аст: Знакомство с операторами Java: логические, арифметические, побитовые - 22

Афзалияти амалиётҳо дар Java

Мисли математика, Java афзалияти амалҳоро дорад. Дар ҷадвали зер афзалияти (аз баландтарин ба пасттарин) амалиётҳое, ки мо баррасӣ кардем, нишон медиҳад. Знакомство с операторами Java: логические, арифметические, побитовые - 23

Намунаҳои муфиди истифода

Муайян кардани баробарии адад

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

Ҷустуҷӯи элементи максималӣ дар массив

Знакомство с операторами Java: логические, арифметические, побитовые - 25Барои дарёфти унсури ҳадди ақал, танҳо аломати муқоисаро дар ҷои лозима иваз кунед.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION