x <<= y (x = x << y)
x >>= y (x = x >> y)
x >>>= y (x = x >>> y)
x &= y (x = x & y)
x ^= y (x = x^y)
x |= y (x = x | y)
Co te różne podmioty zrobić?Co robią operatorzy kodu JavaScript?
x <<= y (x = x << y)
x >>= y (x = x >> y)
x >>>= y (x = x >>> y)
x &= y (x = x & y)
x ^= y (x = x^y)
x |= y (x = x | y)
Co te różne podmioty zrobić?Co robią operatorzy kodu JavaScript?
<<, >>
Bit shift w lewo i prawo. Jeśli wyobrazisz sobie lewy operand jako binarną sekwencję bitów, jesteś przesuwając te wartości w lewo lub w prawo o liczbę bitów wskazaną przez prawy operand.
&, ^, |
Są bitowym i, XOR i lub, odpowiednio. Możesz myśleć o &
i |
jako odpowiednikach &&
i ||
, z tym wyjątkiem, że będą traktować swoje operandy jako wektory bitowe i wykonywać operacje logiczne na każdym z bitów. Nie ma operatora ^^
, ale ta operacja to "xor" lub "exclusive or". Możesz myśleć o "xor b" jako "a lub b, ale nie obu".
Tylko dla kompletności, oprócz operatorów zmianowych, te rzeczy działają również z wartościami boolowskimi (gdzie mogą lub nie mogą być bitowe - są w języku Visual Basic, ale nie (według specyfikacji) w języku Java, AFAIK.) '&' i '|' różnią się od '&&' i '||', ponieważ oba operandy są zawsze oceniane, podczas gdy w '&&'/'||', drugi operand nie jest oceniany, jeśli nie może zmienić wartości wyrażenia af ter oceniono pierwszy operand. –
Oto próba uczynienia rzeczy prostymi dla bardzo początkujących.
wstępne
Musisz być zaznajomieni z binarnym systemie liczbowym (numery wykonane z dwóch cyfr). Jeśli tak nie jest, najpierw sprawdź ten link: https://www.mathsisfun.com/binary-number-system.html. Na wypadek, gdyby poprzedni link się zepsuł, ta odpowiedź może trochę pomóc: https://stackoverflow.com/a/32155850/1636522.
Rzeczywiście, aby dowiedzieć się, jak działają te operatory, trzeba wiedzieć, która sekwencja bitów znajduje się za liczbami biorącymi udział w operacji. Następnie powinieneś być w stanie zrozumieć następujące rzeczy.
przypomnij
cyfr binarnych i ich oznaczenia:
0 0 | 5 101
1 1 | 6 110
2 10 | 7 111
3 11 | 8 1000
4 100 | 9 1001
Czego >>>
, >>
i <<
zrobić?
Operatory te przesuwają nieco sekwencji w lewo lub w prawo.
decimal | binary decimal | binary
---------|--------- ---------|---------
9 | 1001 2 | 10
>> 2 | >> 2 << 2 | << 2
= 2 | = 10 = 8 | = 1000
Czego &
, |
i ^
zrobić?
Operatory te łączą bity dwóch liczb w celu utworzenia nowego numeru.
decimal | binary decimal | binary decimal | binary
---------|-------- ---------|-------- ---------|--------
5 | 101 5 | 101 5 | 101
& 6 | & 110 | 6 | | 110 ^6 |^110
= 4 | = 100 = 7 | = 111 = 3 | = 011
Jak &
pracę?
Dla każdej pary bitów: Jeśli przynajmniej jeden z tych dwóch bitów jest 0, otrzymany kawałek jest 0. Jeżeli żaden z tych bitów jest 0, otrzymany bitu wynosi 1.
101 bit 3 | bit 2 | bit 1
& 110 -------|-------|-------
= 100 1 | 0 | 1
& | & | &
1 | 1 | 0
= | = | =
1 | 0 | 0
Jak działa |
?
Dla każdej pary bitów: Jeśli przynajmniej jeden z tych dwóch bitów jest 1, otrzymany bitu wynosi 1. Jeśli żadna z tych bitów jest 1, otrzymany kawałek jest 0.
101 bit 3 | bit 2 | bit 1
| 110 -------|-------|-------
= 111 1 | 0 | 1
| | | | |
1 | 1 | 0
= | = | =
1 | 1 | 1
Jak działa ^
?
Dla każdej pary bitów: jeżeli dwa bity są różne, otrzymany jest 1. Jeżeli oba bity są takie same, otrzymany kawałek jest 0.
101 bit 3 | bit 2 | bit 1
^ 110 -------|-------|-------
= 011 1 | 0 | 1
^ | ^ | ^
1 | 1 | 0
= | = | =
0 | 1 | 1
również uwagę na [ Co to są operatory bitowe?] (Http://stackoverflow.com/q/276706/1048572) – Bergi