PHP: побитовый оператор
Описание
Побитовые операторы позволяют работать с побитовым представлением своих аргументов.
оператор | название | пример | Результат |
---|---|---|---|
& | А также | $ x & $ y | Биты, которые установлены как в $ x, так и в $ y, установлены. |
| | Или же | $ х | $ у | Биты, которые установлены в $ x или $ y, установлены. |
^ | Xor | $ x ^ $ y | Биты, которые установлены в $ x или $ y, но не оба установлены. |
~ | Не | ~ $ Х | Биты, которые установлены в $ x, не устанавливаются, и наоборот. |
<< | Сдвиг влево | $ x << $ y | Сдвиньте биты шагов $ x $ y влево. # |
>> | Сдвиг вправо | $ x >> $ y | Сдвиньте биты шагов $ x $ y вправо. * |
# Каждый шаг означает «умножить на два»
* Каждый шаг означает «разделить на два»
Что немного?
Бит ( B inary dig IT ) - это базовая единица информации, хранящаяся в вычислительной системе, которая существует в двух возможных состояниях, представленных как ВКЛ или ВЫКЛ . В компьютерной системе состояние ВКЛ рассматривается как 1, а состояние ВЫКЛ рассматривается как 0 . Эти состояния можно сравнить с двумя состояниями триггера, двумя состояниями электрического переключателя ( ВКЛ и ВЫКЛ ) и т. Д. Эти два значения 0 и 1 называются двоичной цифрой, и эти цифры находятся в конкретной системе счисления, то есть двоичном числе система, которая строится на основе 2.
В десятичной системе счисления число строится на основе числа 10. Посмотрим, как можно построить десятичное число:
231 = (2 x 10 2 ) + (3 x 10 1 ) + (1 x 10 0 )
= 200 + 30 + 1
= 231
Система двоичных чисел также следует той же концепции. Единственная разница в том, что основание равно 2 вместо 10. Давайте посмотрим, как двоичное число можно преобразовать в десятичное число -
1011010 = (1 x 2 6 ) + (0 x 2 5 ) + (1 x 2 4 ) + (1 x 2 3 ) + (0 x 2 2 ) + (1 x 2 1 ) + (0 x 2 0 )
= (1 x 64) + (0 x 32) + (1 x 16) + (1 x 8) + (0 x 4) + (1 x 2) + (0 x 1)
= 64 + 0 + 16 + 8 + 0 + 2 + 0
= 90
Итак, (1011010) 2 = (90) 10
Байт
Байт состоит из последовательности битов. Байт состоит из восьми битов. Максимальное значение байта составляет 255, поэтому устанавливается значение места каждого бита.
Табличное представление байта
1 байт (8 бит) | ||||||||
---|---|---|---|---|---|---|---|---|
восьмых | седьмые | шестые | пятые | четвёртая | третий | второй | первый | |
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Вот табличное представление байта, показывающее, как максимальное значение байта составляет 255
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
2 7 | 2 6 | 2 5 | 2 4 | 2 3 | 2 2 | 2 1 | 2 0 | |||
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | знак равно | 255 |
Десятичное число 93 может быть представлено в двоичной форме, как показано ниже:
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | |||
2 7 | 2 6 | 2 5 | 2 4 | 2 3 | 2 2 | 2 1 | 2 0 | |||
0 | 64 | 0 | 16 | 8 | 4 | 0 | 1 | знак равно | 93 |
Побитовое И
Пример PHP побитового И с одним общим битом
<?php
$x=13;
$y=22;
echo $x & $y;
?>
Вывод примера
4
объяснение
Поэтому, ссылаясь на приведенные выше таблицы, можно сказать, что единственный бит этих двух акций находится на 3-й позиции при значении места 4. Таким образом, $ x & $ y = 4.
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | знак равно | 13 |
$ у | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | знак равно | 22 |
В приведенной выше таблице значение установлено для $ x (13) на 1-м, 3-м и 4-м месте. Значения мест соответственно равны 1,4 и 8, и значение установлено для $ y (22) во 2-м, 3-м и 5-м местах с соответствующими значениями мест 2, 4 и 16.
Таким образом, из приведенной выше таблицы видно, что единственным битом, совместно используемым совместно $ x и $ y, является 3-й бит. Итак, 4 возвращается
Посмотрите пример php побитового И с одним общим битом в браузере
Давайте посмотрим на другой пример оператора &, который разделяет больше битов -
Пример PHP побитового И с двумя общими битами
<?php
$x=77;
$y=198;
echo $x & $y;
?>
Вывод примера
68
объяснение
1 байт (8 бит) | ||||||||||
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | знак равно | 77 |
$ у | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | знак равно | 198 |
В приведенной выше таблице значение установлено для $ x (77) на 1-м, 3-м, 4-м и 7-м месте. Значения мест: 1, 4, 8 и 64 и значение, установленное для $ y (198) во 2-м, 3-м, 7-м и 8-м местах с соответствующими значениями мест 2, 4, 64 и 128.
Таким образом, из приведенной выше таблицы видно, что биты, совместно используемые $ x и $ y, - это 3-й и 7-й биты. Таким образом, 64 + 4 = 68 возвращается.
Посмотрите пример php побитового И с двумя общими битами в браузере
Побитовое ИЛИ
Пример PHP побитового ИЛИ
<?php
$x=5;
$y=11;
echo $x | $y;
?>
Вывод примера
15
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | знак равно | 5 |
$ у | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | знак равно | 11 |
В приведенной выше таблице значение установлено для $ x (5) на 1-м и 3-м месте. Значения мест соответственно равны 1 и 4, и значение, установленное для $ y (11) на 1-м, 2-м и 4-м местах с соответствующими значениями мест 1, 2 и 8.
Таким образом, из приведенной выше таблицы видно, что $ x и $ y устанавливают вместе 1-й, 2-й, 3-й или 4-й биты. Таким образом, возвращаемое значение - это добавление значения места битов набора, то есть 8 + 4 + 2 + 1 = 15.
Посмотреть пример php побитового ИЛИ в браузере
Побитовый XOR
Оператор Xor также выполняет побитовое сравнение в двух числовых выражениях и устанавливает соответствующий бит в результате. Когда одно и только одно из выражений имеет значение true, результат равен true.
В приведенной ниже таблице показано, как выполняется операция XOR.
Выражение1 | Выражение2 | Результат |
---|---|---|
Ложь | Ложь | Ложь |
Ложь | Правда | Правда |
Правда | Ложь | Правда |
Правда | Правда | Ложь |
В приведенной ниже таблице показано побитовое сравнение побитового XOR -
Бит в выражении1 | Бит в выражении2 | Результат |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Пример PHP побитового XOR
<?php
$x=12;
$y=11;
echo $x ^ $y;
?>
Вывод примера
7
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | знак равно | 12 |
$ у | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | знак равно | 11 |
В приведенной выше таблице значение установлено для $ x (12) на 3-м и 4-м месте. Значение места соответственно равно 4 и 8, и значение устанавливается для $ y (11) на 1-м, 2-м и 4-м месте с соответствующим значением места 1, 2 и 8.
Таким образом, из приведенной выше таблицы видно, что $ x и $ y устанавливают вместе 1-й, 2-й, 3-й или 4-й биты, но они совместно используют только 4-й бит. Таким образом, возвращаемое значение - это добавление значения места установленных битов, но не общего бита, то есть 4 + 2 + 1 = 7.
Посмотреть пример php побитового XOR в браузере
Побитовое НЕ
В приведенной ниже таблице будет показано, как оператор NOT работает с $ x и $ y, и возвращает true, если установленный бит одного выражения не установлен в другом выражении.
Пример PHP поразрядно НЕ используется после AND
<?php
$x=12;
$y=10;
echo $x & ~ $y;
?>
Вывод примера
4
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | знак равно | 12 |
$ у | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | знак равно | 10 |
В приведенной выше таблице значение установлено для $ x (12) на 3-м и 4-м месте. Значение места соответственно равно 4 и 8, и значение устанавливается для $ y (10) на 2-м и 4-м месте с соответствующими значениями места 2 и 8.
Таким образом, из приведенной выше таблицы видно, что $ x и $ y устанавливают вместе 1-й, 2-й, 3-й или 4-й биты, но они совместно используют только 4-й бит. Таким образом, возвращаемое значение равно 4, потому что только наборы битов в $ x, но не в $ y.
Посмотрите пример php побитовой НЕ использовать после И в браузере
Пример PHP поразрядно НЕ используется перед AND
<?php
$x=12;
$y=10;
echo ~ $x & $y;
?>
Вывод примера
2
объяснение
В этом случае возвращаемое значение равно 2, потому что бит установлен в $ y, но не в $ x.
Посмотрите пример php побитовой НЕ использовать до и в браузере
Сдвиг бит
Если a и b - два числа, BIT SHIFTING сдвигает биты b на количество шагов. каждый шаг относится к умножению на два, если это BIT SHIFT LEFT. Если это BIT SHIFT RIGHT, то каждый шаг относится к делению на два.
Пример PHP Bit Shifting (сдвиг влево)
<?php
$x=8;
$y=3;
echo $x << $y;
?>
Вывод примера
64
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | знак равно | 8 |
Выход | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | знак равно | 64 |
В вышеприведенном примере берется значение $ x, равное 8, и выполняется операция BIT SHIFT LEFT. Итак, 8 умножается на 2 трижды. Таким образом, мы получаем 8 х 2 х 2 х 2 = 64.
Посмотреть пример php Bit Shifting (сдвиг влево) в браузере
Расширенный пример PHP Bit Shifting (сдвиг влево)
<?php
$x=12;
$y=4;
echo $x << $y;
?>
Вывод примера
192
объяснение
В приведенном выше примере берется значение $ x, равное 12, и выполняется операция BIT SHIFT LEFT. Итак, 12 умножается на 2 в четыре раза. Таким образом, мы получаем 12 x 2 x 2 x 2 x 2 = 192.
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | знак равно | 12 |
Выход | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | знак равно | 192 |
Посмотреть предварительный пример php Bit Shifting (сдвиг влево) в браузере
Пример PHP Bit Shifting (правое смещение)
<?php
$x=8;
$y=3;
echo $x >> $y;
?>
Вывод примера
1
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | знак равно | 8 |
Выход | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | знак равно | 1 |
В вышеприведенном примере берется значение $ x, равное 8, и выполняется операция BIT SHIFT RIGHT. Итак, 8 делится на 2 три раза. Таким образом, мы получаем 8/2 = 4/2 = 2/2 = 1.
Посмотреть пример php Bit Shifting (сдвиг вправо) в браузере
Расширенный пример PHP Bit Shifting (сдвиг вправо)
<?php
$x=96;
$y=5;
echo $x >> $y;
?>
Вывод примера
3
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | знак равно | 96 |
Выход | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | знак равно | 3 |
В приведенном выше примере берется значение $ x, равное 96, и выполняется операция BIT SHIFT RIGHT. Итак, 96 делится на 2 пять раз. Таким образом, мы получаем 96/2 = 48/2 = 24/2 = 12/2 = 6/2 = 3.
Посмотреть предварительный пример php Bit Shifting (сдвиг вправо) в браузере
Пример PHP Bit Shifting (сдвиг вправо) превышает значение шага
<?php
$x=64;
$y=7;
echo $x >> $y;
?>
Вывод примера
0
объяснение
1 байт (8 бит) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Стоимость места | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
$ х | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | знак равно | 64 |
Выход | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | знак равно | 0 |
В приведенном выше примере берется значение $ x, равное 64, и выполняется операция BIT SHIFT RIGHT. Итак, 64 делится на 2 семь раз. Делая в определенной точке, нам нечего делить. Таким образом, возвращение равно 0.
Посмотреть предварительный пример php Bit Shifting (сдвиг вправо) превышает значение шага в браузере
Предыдущая: Операторы присваивания
Далее: Строковые операторы
Новый контент: Composer: менеджер зависимостей для PHP , R программирования