Битови оператори су погодни за употребу и могу довести до невероватно брзог кода. Сазнајте шта су и како да их користите.

Битови оператори су они који делују на бинарном нивоу. Често се веома брзо извршавају и обично делују на два операнда.

Можете користити битне операторе да манипулишете бинарним бројевима, оптимизујете код, компресујете податке и примените технике за графику или програмирање игара. Као и већина других програмских језика, ЈаваСцрипт има одличну подршку за битне операције.

Шта су оператери?

Већина програмских језика користи концепт „оператора“ — симбола који говори тумачу да изврши одређену математичку, релацију или логичку операцију.

Има их много различите врсте ЈаваСцрипт оператора треба да будете свесни, од оних који изгледају као стандардни математички оператори, као што је „+“, до оператора који упоређују две вредности. Битови оператори су посебан скуп који се бави бинарним бројевима.

Оператор битова И (&).

ЈаваСцрипт по битовима И (&) оператор упоређује одговарајуће бите од два

instagram viewer
бинарни операнди — бројеви који садрже само 0 и 1. За сваки пар улазних битова, одговарајући излазни бит је „1“ ако су оба улазна бита „1“ или „0“ у супротном.

Ево синтаксе битног АНД оператора:

а & б

У овом примеру, а и б су операнди на којима изводите операцију по битовима.

Ево како функционише оператор АНД у битовима:

  1. Операција АНД се примењује на сваки пар одговарајућих битова у а и б с десна на лево.
  2. Ако су оба бита 1, резултат је 1. Ако је било који бит 0, резултат је 0.
  3. Резултат је нови број где сваки бит представља исход операције И на одговарајућим битовима а и б.

На пример:

дозволити а = 50; // 00110010
дозволити б = 100; // 01100100

дозволити резултат = а & б; // 00100000

конзола.лог (резултат); // 32

У горњем примеру, а је 50 у децимали, што је еквивалентно бинарном броју 00110010, и б је 100 у децимали, што је еквивалентно бинарном броју 01100100. Оператор АНД упоређује сваки пар одговарајућих битова с десна на лево и производи резултујући бинарни број 00100000, који је 32 у децимали.

Оператор битова ИЛИ (|).

Битно ОР (|) оператор упоређује одговарајуће битове два операнда и враћа „1“ ако су један или оба бита „1“ и „0“ ако су оба бита „0“.

Ево синтаксе битног ОР оператора:

а | б

Где а и б су операнди операције.

Битни ОР (|) оператор ради на исти начин као и битни АНД оператор. Једина разлика је у томе што оператор ОР враћа „1“ ако је „било који“ од бита „1“ и „0“ ако су „оба“ бита „0“.

На пример:

дозволити а = 50; // 00110010
дозволити б = 100; // 01100100

дозволити резултат = а | б; // 01110110

конзола.лог (резултат); // 118

У горњем примеру, побитни ОР оператор упоређује сваки пар битова с десна на лево (тј. 0 | 0 = 0, 0 | 1 = 1, 1 | 1 = 1, и тако даље). Добијени бинарни број је 01110110, што је 118 у децимали.

Битвисе КСОР (^) оператор

Битни КСОР (^) оператор упоређује одговарајуће битове два операнда и враћа „1“ ако је један, али не и оба операнда „1“ и „0“ ако су оба операнда „1“ или „0“.

Ево синтаксе битског КСОР оператора:

а ^ б

Где а и б су операнди операције.

Битни КСОР оператор ради на исти начин као и битни ОР и АНД оператори. Једина разлика је у томе што враћа „1“ ако је „један, али не оба“ операнда „1“ и „0“ ако су „оба“ операнда „1“ или „0“.

На пример:

дозволити а = 50; // 00110010
дозволити б = 100; // 01100100

дозволити резултат = а ^ б; // 01010110

конзола.лог (резултат); // 86

У горњем примеру, КСОР оператор упоређује сваки пар битова с десна на лево (тј. 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 1 = 0, и тако даље). Добијени бинарни број је 01010110, што је 86 у децимали.

Битвисе НОТ (~) оператор

Битно НЕ (~) оператор је унарни оператор који ради са једним целим бројем инвертујући све његове битове. Другим речима, мења сваки "0" бит у "1" и сваки "1" бит у "0".

Ево синтаксе оператора НОТ у битовима:


Где ц је операнд.

Битни НОТ оператор ради тако што инвертује све битове операнда, укључујући битове предзнака.

На пример:

дозволити ц = 10; // 00001010
дозволити д = -10; // 11110110

конзола.лог(~ц); // 11110101
конзола.лог(~д); // 00001001

У горњем примеру, НОТ оператор инвертује све битове (тј. 01, 10итд.), укључујући битове предзнака.

Леви Схифт (<

Оператор левог померања помера битове датог броја улево. Оператор узима два операнда: број за померање и број битова за померање.

Ево синтаксе за оператор левог померања:

а << б

Где а је операнд за оператор левог померања, и б је број битова за који ће оператор померити операнд.

Оператор левог померања ради тако што помера сваки бит операнда улево за одређени број позиција и одбацује вишак битова померених улево.

На пример:

дозволити а = 50; // 00110010
дозволити б = 2;

дозволити резултат = а << б; // 11001000

конзола.лог (резултат); // 200

У горњем примеру, леви оператор померања померио је децимални број 50 бинарног 00110010 за два места. Добијена бинарна вредност је 11001000, што је 200 као децимала.

Оператор померања знака удесно (>>).

Померање удесно које се шири знаком (>>) помера битове броја удесно задржавајући предзнак оригиналног броја. Оператор узима два операнда: број за померање и број битова за померање.

Ево синтаксе за оператор померања удесно који пропагира знак:

а >> б

Где а је операнд за десни оператор померања, и б је број битова за који ће оператор померити операнд.

Оператор десног померања знака ради слично као и оператор левог померања; једина разлика у начину рада је у томе што десна смена одржава знак.

На пример:

дозволити а = -50; // 11001110
дозволити б = 2;

дозволити резултат = а >> б; // 11110011

конзола.лог (резултат); // -13

У горњем примеру, десни оператор померања померио је децималу -50 (11001110) за два размака удесно, што је резултирало децималом -13 (11110011).

Непотписани десни Схифт (>>>) оператор

Непотписани десни помак (>>>) оператор помера битове броја удесно за одређени број позиција и попуњава празна места на левој страни нулама. Оператор одбацује вишак битова које помера удесно.

Ево синтаксе за непотписани оператор померања удесно:

а >>> б

Где а је операнд за десни оператор померања, и б је број битова за који ће оператор померити операнд.

Непотписани оператор десне смене ради слично као десна смена. Међутим, за разлику од оператора десне смене (>>), не чува знак броја при померању. Уместо тога, третира број као цели број без предзнака и попуњава крајњи леви бит нулом.

На пример:

дозволити а = -5; // 11111111 11111111 11111111 11111011
дозволити б = 2;

дозволити резултат = а >>> б; // 00111111 11111111 11111111 11111110

конзола.лог (резултат); // 1073741822

У овом примеру, непотписани оператор померања удесно је померио „-5“ два размака удесно, ефективно уклонивши знак и резултирајући децималом „1073741822“.

Примене битних оператора

Манипулишући појединачним битовима у бинарним бројевима, битски оператори могу створити сложену функционалност коју је иначе тешко или немогуће постићи традиционалним аритметичким операцијама.

Разумевање како да користите битне операторе може вам помоћи да изградите ефикасније и ефикасније веб апликације.