@cybernoob

Побитовые операции PHP. Что такое исключающее или?

Есть дока php.net/manual/ru/language.operators.bitwise.php где около оператора ^ указано:
Устанавливаются только те биты, которые установлены либо только в $a, либо только в $b, но не в обоих одновременно.

$sum = 1 ^ 1; // 0
$sum = 1 ^ 2; // 3
$sum = 4 ^ 5; // 1

Например 1 и 2.
1 при переводе в двоичную = 1
2 при переводе в двоичную = 10
Откуда 3-то берётся?

То же самое:
4 = 100
5 = 101
Ответ 1. Ну в 4ке же есть такой бит...
  • Вопрос задан
  • 392 просмотра
Решения вопроса 2
denisbondar
@denisbondar
Python, PHP developer
В результате получаем только те биты, которые отличаются между A и B
00000001 = 1
00000001 = 1
--------
00000000 = 0


00000001 = 1
00000010 = 2
--------
00000011 = 3


00000100 = 4
00000101 = 5
--------
00000001 = 1
Ответ написан
@deadem
Исключающее или работает так:
0 ^ 0 = 0
1 ^ 0 = 1
0 ^ 1 = 1
1 ^ 1 = 0

Для иллюстрации исключающего или длинных чисел, проще всего написать в столбик:
1 при переводе в двоичную = 01
2 при переводе в двоичную = 10
01
^
10
---
11

11 в десятичной системе = 3

100
^
101
---
001

001 = десятичному 1
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы