В процессе изучения веб-разработки. Вообще не понял эту тему. Пытаюсь вникнуть 2 час..
1. Бит, как понял - 1 число (0 or 1)
2. Если хотя бы 1 бит, равен нулю, в результате будет 0.
3. Если 2 бита будут равняться 1 (будут иметь значение (?)(во всем выражении(?))), на выходе получаем 1.
4. Если хотя бы 1 бит, единичный (имеет значение 1(?)) и др. случаях, на выходе будет 0.
Почему 4 пункт не противоречит 3? И откуда вообще взялось 5, при 13&21 ??
(чек. материал с фото)
PHP
PHP. Побитовые операции
таблица истинности для "И"
0 & 0 = 0
0 & 1 = 0
1 & 1 = 1
1 & 0 = 0
5 получается, потому что двоичная запись результата соответствует 5 в десятичной.
0 & 0 = 0
0 & 1 = 0
1 & 1 = 1
1 & 0 = 0
5 получается, потому что двоичная запись результата соответствует 5 в десятичной.
Сергей Малышев
Спасибо, ты лучший
И это если оба операнда равны 1 тогда получается 1
ИЛИ - это если хотя бы один из операндов
НЕ - отрицание меняет 0 на 1 и наоборот
Таким макаром складываешь каждую цифру в числе и получаешь результат
ИЛИ - это если хотя бы один из операндов
НЕ - отрицание меняет 0 на 1 и наоборот
Таким макаром складываешь каждую цифру в числе и получаешь результат
Оператор "И" во всех языках программирования работает одинаково, так что вопрос не только про PHP) Ну это так, к слову.
Суть оператора "И" (and) – выдать истину только если оба аргумента – истинны: "и то, и то – истинно". То есть "истина и истина = истина". Во всех прочих случаях оператор "И" даёт ложь.
У оператора "или" немного иной принцип работы: "хотя бы одно значение должно быть истинным". Для оператора "или" таблица такова:
Оператор "не и" (nand – "not and") даёт прямо противоположные значения "и" (and):
Оператор "не или" (nor – "not or") даёт прямо противоположные значения "или" (or):
Также есть "исключающее или" (xor), оно даёт истину если ТОЛЬКО ОДНО значение – истинно:
Также есть "исключающее не или" (xnor), оно даёт значения прямо противоположно xor:
Побитовые операции выполняются по принципу сравнения каждого бита двух чисел. Например есть два числа в двоичной форме: 10101 и 10001, представим их в виде "ABCDE" и "FGHIJ". И, допустим, сравниваются они оператором "и". Таким образом получается:
Теперь нам нужно сравнить по вертикали числа по принципу "и":
Если одно число короче другого – в начало короткого числа добавляются нули до одинакового количества битов, то есть при сравнении "1001 and 1100101" мы будем их сравнивать как "0001001 and 1100101".
По вопросу:
Суть оператора "И" (and) – выдать истину только если оба аргумента – истинны: "и то, и то – истинно". То есть "истина и истина = истина". Во всех прочих случаях оператор "И" даёт ложь.
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
У оператора "или" немного иной принцип работы: "хотя бы одно значение должно быть истинным". Для оператора "или" таблица такова:
1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
0 or 0 = 0
Оператор "не и" (nand – "not and") даёт прямо противоположные значения "и" (and):
1 nand 1 = 0
1 nand 0 = 1
0 nand 1 = 1
0 nand 0 = 1
Оператор "не или" (nor – "not or") даёт прямо противоположные значения "или" (or):
1 nor 1 = 0
1 nor 0 = 0
0 nor 1 = 0
0 nor 0 = 1
Также есть "исключающее или" (xor), оно даёт истину если ТОЛЬКО ОДНО значение – истинно:
1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0
Также есть "исключающее не или" (xnor), оно даёт значения прямо противоположно xor:
1 xnor 1 = 1
1 xnor 0 = 0
0 xnor 1 = 0
0 xnor 0 = 1
Побитовые операции выполняются по принципу сравнения каждого бита двух чисел. Например есть два числа в двоичной форме: 10101 и 10001, представим их в виде "ABCDE" и "FGHIJ". И, допустим, сравниваются они оператором "и". Таким образом получается:
10101
and
10011
В буквенном представлении: ABCDE
and
FGHIJ
Теперь нам нужно сравнить по вертикали числа по принципу "и":
A and F == 1 and 1 = 1
B and G == 0 and 0 = 0
C and H == 1 and 0 = 0
D and I == 0 and 1 = 0
E and J == 1 and 1 = 1
Итоговое сравнение: 10101 and 10011 = 10001.Если одно число короче другого – в начало короткого числа добавляются нули до одинакового количества битов, то есть при сравнении "1001 and 1100101" мы будем их сравнивать как "0001001 and 1100101".
По вопросу:
И откуда вообще взялось 5, при 13&21Сначала мы переводим 13 и 21 из десятичного в двоичное представление и получаем 1101 и 10101 соответственно. Выравниваем их до одной длины и получаем: 01101 & 10101. Сравниваем их оператором and:
01101
and
10101
=
00101
Теперь переводим полученное число "00101" в десятичный вид и на выходе как раз получаем десятичное число 5.бит не число а значение true/ false
Виктор Кожевин
бит это значение 1 разряда числа в двоичной системе счисления
Похожие вопросы
- Для чего нужны побитовые операции в PHP? Объясните мне как можно детальнее, на что хватит духу.
- PHP Polling ChatGPT
- Как оптимизировать структуру сайта php. на готовом шаблоне
- Не работает PHP include на хостинге
- Хеширование пароля php
- Подскажите хороший курс по PHP практике?
- Пишу авторизацию (php). Куки не работают
- Вопрос начинающего программиста Python\PHP
- Как в PHP указать тип переменной unsigned int?
- какой функционал делают на сайтах с помощью php? вообще не пойму что конкретно пишут на этом языке на сайтах..