Побитови операции - 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 ще върне битово обърнатата стойност (обратен код) на операнда. Таблицата на истината за тази операция изглежда така: