Побитови операции - JavaScript, MDN

Преводът не е завършен. Моля, помогнете при превода на тази статия от английски.

Представяне на числа (подписани 32-битови цели числа)

Операндите на всички битови операции се преобразуват в 32-битови подписани цели числа, представени в допълнение на две, като се използва най-значимото подреждане на битовете. Подреждането на най-значимите битове означава, че най-значимият бит (битът с най-висока стойност) е вляво, ако 32-битовото число е представено като хоризонтална линия (скала). Представянето на комплемента на двамата означава, че се получава отрицателна стойност на число (като 5 и -5) чрез инвертиране на числото (битовата операция NOT, известна също като обратен код) и добавяне на едно към него.

Вземете например числото 314. Нека го представим в двоичен вид:

Следващият ред е неговият обратен код, или

Добавяйки едно към него, получаваме двоичното представяне на числото -314 или допълнението на 314 на две:

Допълнението на 2 гарантира, че положителното число има най-левия бит 0, докато отрицателното има 1. Това се нарича знаков бит.


Числото 0 е число, което има нули във всички битови позиции.

Числото -1 е число, което има такива във всички битови позиции.

Числото -2147483648 (в шестнадесетична нотация: -0x80000000) е реално число, което се състои само от 0, с изключение на първото отляво, което е 1 (отговаря за знака на числото).

Число 2147483648 (в шестнадесетична нотация: 0x80000000) е реално число, което се състои само от 1, с изключение на първото отляво, което е 0 (отговаря за знака на числото).

-2147483648 и 2147483647 са най-малките и най-големите числа, които могат да бъдат представени в 32-битово място на паметта.

Побитови логически операции

Побитовите логически операции работят както следва:

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

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

Произвежда побитово И върху всяка двойка битове. Операция a И b ще върне 1, ако и a, и b са равни на 1. Таблицата на истината за тази операция изглежда така:

Побитовото И на произволно число x с нула ще върне 0.

Побитовото И на произволно число x с число -1 ще върне x.

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

Извършва побитово ИЛИ за всяка двойка битове. Операция a ИЛИ b ще върне 1, ако a или b са равни на 1. Таблицата на истината за тази операция изглежда така:

Побитово ИЛИ на произволно число x с нула ще върне x.

Побитово ИЛИ на всяко число x с номер -1 ще върне -1.

^ (Побитово XOR)

Извършва побитови XOR за всяка двойка битове. Операция a XOR b ще върне 1, ако a и b са различни. Таблицата на истината за тази операция изглежда така:

Побитово XOR на произволно число x с нула ще върне x.

Побитово XOR на произволно число x с номер -1 ще се върне

Извършва операция НЕ за всеки бит. НЕ a ще върне битово обърнатата стойност (обратен код) на операнда. Таблицата на истината за тази операция изглежда така: