Что делают эти побитовые операторы JavaScript?

javascript operators bit-manipulation

2688 просмотра

3 ответа

5743 Репутация автора

  • 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)

Что делают эти разные операторы?

Автор: DarkLightA Источник Размещён: 26.12.2010 08:38

Ответы (3)


5 плюса

36852 Репутация автора

Битовые операторы

Автор: Matt Размещён: 26.12.2010 08:40

13 плюса

32164 Репутация автора

Решение
<<, >>

Сдвиг бит влево и вправо соответственно. Если вы представляете левый операнд как двоичную последовательность битов, вы сдвигаете их влево или вправо на количество бит, указанное правым операндом.

&, ^, |

Это побитовые и , xor , и или , соответственно. Вы можете думать &и |как коллег &&и ||, за исключением того, что они будут относиться к их операнды как битовые векторы, а также выполнять логические операции на каждом из битов. ^^Оператора нет , но эта операция является «xor» или « exclusive or ». Вы можете думать о «a xor b» как «a или b, но не оба».

Автор: asveikau Размещён: 26.12.2010 08:45

2 плюса

12126 Репутация автора

Вот попытка сделать вещи простыми для самого новичка.

Предпосылки

Вы должны быть знакомы с системой двоичных чисел (числа, состоящие из двух цифр). Если это не так, сначала проверьте эту ссылку: https://www.mathsisfun.com/binary-number-system.html . На случай, если предыдущая ссылка оборвется, этот ответ может немного помочь: https://stackoverflow.com/a/32155850/1636522 .

Действительно, чтобы выяснить, как работают эти операторы, вам необходимо знать, какая битовая последовательность находится за числами, участвующими в операции. После этого вы сможете понять следующие вещи.

напоминание

Десятичные цифры и их двоичные обозначения:

0    0 | 5  101
1    1 | 6  110
2   10 | 7  111
3   11 | 8 1000
4  100 | 9 1001

Что делать >>>, >>и <<делать?

Эти операторы сдвигают битовую последовательность влево или вправо.

 decimal | binary      decimal | binary 
---------|---------   ---------|---------
       9 |    1001           2 |      10
    >> 2 | >>    2        << 2 | <<    2
     = 2 |  =   10         = 8 |  = 1000

Что делать &, |и ^делать?

Эти операторы объединяют биты двух чисел, чтобы создать новый номер.

 decimal | binary     decimal | binary     decimal | binary
---------|--------   ---------|--------   ---------|--------
       5 |    101           5 |    101           5 |    101
     & 6 |  & 110         | 6 |  | 110         ^ 6 |  ^ 110
     = 4 |  = 100         = 7 |  = 111         = 3 |  = 011

Как &работает?

Для каждой пары битов: если хотя бы один из двух битов равен 0, результирующий бит равен 0. Если ни один из двух битов не равен 0, результирующий бит равен 1.

  101    bit 3 | bit 2 | bit 1
& 110   -------|-------|-------
= 100      1   |   0   |   1
           &   |   &   |   &
           1   |   1   |   0
           =   |   =   |   =
           1   |   0   |   0

Как |работает?

Для каждой пары битов: если хотя бы один из двух битов равен 1, результирующий бит равен 1. Если ни один из двух битов не равен 1, результирующий бит равен 0.

  101    bit 3 | bit 2 | bit 1
| 110   -------|-------|-------
= 111      1   |   0   |   1
           |   |   |   |   |
           1   |   1   |   0
           =   |   =   |   =
           1   |   1   |   1

Как ^работает?

Для каждой пары битов: если два бита различны, результирующий бит равен 1. Если два бита одинаковы, результирующий бит равен 0.

  101    bit 3 | bit 2 | bit 1
^ 110   -------|-------|-------
= 011      1   |   0   |   1
           ^   |   ^   |   ^
           1   |   1   |   0
           =   |   =   |   =
           0   |   1   |   1
Автор: leaf Размещён: 19.08.2015 11:07
Вопросы из категории :
32x32