Javascript Справочни битови оператори

Описание, примери

Побитовите оператори интерпретират операндите като последователност от 32 бита (нули и единици). Те извършват операции, използвайки двоичното представяне на число и връщат нова 32-битова последователност (число) като резултат.

Следващата таблица изброява всички битови оператори.
Освен това, двоичното представяне на число и оператори са обсъдени по-подробно.

32-битов формат с подписано цяло число

Операндите на всички побитови операнди се интерпретират като 32-битови подписани цели числа с най-значимия бит вляво и допълнение на две.

„Най-значимият бит вляво“ - означава, че най-значимият бит (битова позиция с най-висока стойност) е в най-лявата позиция.

„Допълнение на две“ означава, че обратното на даденото число (например 5 и -5) се получава чрез обръщане (двоично НЕ) на всички битове и добавяне на 1.

Например, тук е числото 314:

За да получите -314, първата стъпка е да обърнете битовете на числото:

Втората стъпка е да добавите една:

Принципът на комплемента на двамата разделя всички двоични представления на два набора: ако най-левият бит е 0, числото е положително, ако 1, числото е отрицателно. Следователно този бит се нарича знак бит.

Побитови операции

Двоичните битови оператори работят по следния начин:

  • Операндите се преобразуват в 32-битови цели числа, представени от последователност от битове (нули и единици)
  • Всеки бит в първия операнд се разглежда заедно със съответния бит във втория операнд: първият бит с първия, вторият с втория и т.н.
  • Операторът се прилага към всяка двойка битове, като дава съответния бит от резултата.

& (побитово И)

Извършва операция И на всяка двойка битове. a AND b е едно само когато и двата бита са едно.

Таблица на истината за И:

| (Побитово ИЛИ)

Извършва операция ИЛИ за всяка двойка битове. a ИЛИ b е 1, ако поне един бит от a, b е 1.

Таблица на истината за ИЛИ:

^ (Изключително ИЛИ)

Извършва ексклузивна операция ИЛИ за всяка двойка битове.
a Изключително ИЛИ b е 1, ако само a = 1 или само b = 1, но не и двете a = b = 1 .