кодесурса
«PHP

PHP: побитовый оператор

script1adsense2code
script1adsense3code

Описание

Побитовые операторы позволяют работать с побитовым представлением своих аргументов.

оператор название пример Результат
& А также $ 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code