2010-12-26 22 views
8
  • 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?

+0

również uwagę na [ Co to są operatory bitowe?] (Http://stackoverflow.com/q/276706/1048572) – Bergi

Odpowiedz

13
<<, >> 

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".

+0

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. –

2

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 
Powiązane problemy