@ubunta2 тебе кто то должен помогать? --- Добавлено --- Столько реальной фигни как ты еще никто не писал
Честно? Я пытался. Много раз. Но ты, вместо того, чтобы понимать, только спрашивал "а как?". Хотя, сейчас, есть прогресс, да. Это хорошо.
111100000111100010110101010= 126076330 000000000000000000000011100=28 (126076330 & 28) 01001 >> 2) 001001=4 --- Добавлено --- 111100000111100010110101010= 126076330 000000000000011111111100000= 16352 01110110101 (126076330 & 16352) >> 5 не пойму нужно сместить единицы
Сместить разряды, не единицы. Разряд - это 0 или 1. В принципе, тоже самое можно и с десятичными числами делать, какая разница вот было у нас число 165, если мы его сместим вправо на один разряд получится 16, ещё на один разряд - получится 1. А тут у нас двоичное число 10110100000, смещаем на один разряд (т.е. убираем последнюю цифру, фактически), получаем 1011010000, ещё на один разряд - получаем 101101000, ещё на один разряд - получаем 10110100, и т.д. Т.е. сместив на 5 разрядов, получаем 101101. Если сместим на ещё один разряд, уже уйдёт единица, будет 10110. А передние нули - это потому что у нас. Передние нули - это потому что у нас целая переменная имеет определённую разрядность (т.е. общее количество нулей и единиц в отведённой под неё памяти всегда одинаково). Смещение влево даст обратный эффект (ну мы же пишем слева направо). При смещении влево в конце появляются нули: 1 << 1 = 10 (2) = 2 (10) 2 << 1 = 100(2) = 4 (10) 4 << 1 = 1000 (2) = 8 (10) Кстати, смещение влево всегда нам даёт умножение на 2, а в право - деление (только без дробной части и остатка). Так же как в десятичной системе давало бы умножение или деление на 10. --- Добавлено --- Вообще, разряды чисел в начальной школе ещё проходят (только в десятичной системе). Сотни, десятки, единицы. Разряд, ещё раз, - это в данном случае одна цифра в числе, в двоичной системе счисления цифры только две - 1 и 0.
вот было у нас число 165, если мы его сместим вправо на один разряд получится 16, ещё на один разряд - получится 1. А тут у нас двоичное число 10110100000, не понял
Нет, надо сделать побитовое логическое умножение. Оба числа перевести в двоичную систему, записать Код (Text): 111100000111100010110101010 000000000000000000000011100 --------------------------- 000000000000000000000001000 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 1 & 1 = 1 А есть ещё логическое сложение, или по-другому "или": 0|0 = 0 0|1 = 1 1|0 = 1 1|1=1 Ключевое слово - логическое, поэтому 1|1=1, а не 2 (1 + 1) - чувствуешь разницу?. --- Добавлено --- Про "исключающее или" и битовое отрицание оставляю тебе поискать самому инфу --- Добавлено --- В двоичную систему - поскольку в компьютерах всё в ней хранится, научить комп аппаратно понимать десятичные числа наверное возможно, но нецелесообразно. Знаю, была попытка создать машину с троичной системой счисления, но тоже популярность идея не получила. Сейчас основные двоичные операции канальные транзисторы способны выполнять с момента напыления, как нам в ВУЗе рассказывали
Первым делом, цифры из десятичной системы исчисления переводишь в двоичную, потому что там у тебя операция для двоичной системы, теперь у тебя есть два десятичных числа, над ними проводишь операцию & (И) https://secure.php.net/manual/ru/language.operators.bitwise.php $a & $b: Устанавливаются только те биты, которые установлены и в $a, и в $b.
000000000000000000000001000 >> 5 00000000000000000000000100000000 =256 --- Добавлено --- не понял этот момент
8 =1000 256=100000000 --- Добавлено --- 000000000000000000000001000 >>2 00000000000000000000000100000=32 echo "Цвет: " . ((126076330 & 28) >> 2) . "<br />"; на экране 2 --- Добавлено --- а все понял 0000000000000000000000010=2 --- Добавлено --- 111100000111100010110101010 000000000000011111111100000 000000000000000010110100000=45 все я понял ура --- Добавлено --- 0000000000000000101101(00000) 0000000000000000101101=45
Так я и писал, что если что-то не понятно то можно пропускать, и потом возвращаться. Не обязательно сразу с ходу пытаться все понять. Бывает так что не понятно сразу, потом возвращаешся и уже становиться понятно.
PHP: <?php ## Оператор ?? $x = NULL; $y = NULL; $z = 3; var_dump($x ?? $y ?? $z); // int(3) ?> Parse error: syntax error, unexpected '?' in E:\OpenServer\domains\test.ru\exists.php on line 5