Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поразрядные операторы
 
 автор: Wita1y   (18.04.2006 в 10:10)   письмо автору
 
 

В учебнике по теме: "Поразрядные операторы".

& Поразрядная конъюнкция (AND)
| Поразрядная дизъюнкция (OR)
^ Поразрядное исключающее ИЛИ (XOR)
~ Поразрядное отрицание (NOT)
<< Сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда
>> Сдвиг вправо битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда

Пример:

<?php
   
echo(4<<2); // равно 16 
   
echo"<br>"
   echo(
5>>1); // равно 2
   
echo"<br>"
   echo(
6&5); // равно 4
   
echo"<br>"
   echo(
6|5); // равно 7
   
echo"<br>"
   echo(
6^5); // равно 3
?>

Двоичный код для 4 равен 100, при сдвиге влево на 2 разряда код 100 становится равным 10000, что соответствует десятичному значению 16. Остальные примеры могут быть разобраны аналогично. Обратим внимание на то, что сдвиг влево на n позиций эквивалентен умножению на 2n, а сдвиг вправо уменьшает соответствующее значение в 2n раз с отбрасыванием дробной части результата (поэтому 5>>1 равно 2). Основное назначение этих операторов – быстрые вычисления. Так как их поддержка осуществляется на аппаратном уровне (процессор), алгоритмы, выполненные с использованием данных операторов получаются очень производительными.

Первый пример вроде как понял, но остальные нет. :-( В каких случаев будут применяться поразрядные операторы?
Если несложно, пожалуйста, объясните мне все примеры поразрядных операторов. Мне кажется, что потом пригодиться.

P.S.: И хотелось бы поподробнее получить ответ на данную тему.

Всем спасибо. :-)

   
 
 автор: cheops (из кафе)   (18.04.2006 в 12:12)
 
   для: Wita1y   (18.04.2006 в 10:10)
 

Сейчас под рукой материала нет, поднимите тему вечером - постараюсь подробнее отписаться, если не опередят.

   
 
 автор: Wita1y   (07.05.2006 в 15:16)   письмо автору
 
   для: cheops (из кафе)   (18.04.2006 в 12:12)
 

Поднимаю тему. :-)

Повторюсь еще раз из темы: "Юные умы. Наше будущее! :-)"
>Я понял как из десятичной получить двоичную а уж потом
>вычисления поразрядного оператора (4<<2, 5>>1, 6&5, 6|5, 6^5).
>Я долго мучился и даже немного нервничал, так моё обучение
>тормозилось вот и за этого вопроса... (что из чего идет?).
>Зато когда понял... радости было через край...
>Чем сложнее и тернистей путь, тем слаще и вожделенней победа. :-)))

А кто мне объяснит как этим пользоваться и где нужно его приминять (т.е. желательно)?
~ Поразрядное отрицание (NOT)


Всем спасибо

   
 
 автор: cheops   (07.05.2006 в 23:08)   письмо автору
 
   для: Wita1y   (07.05.2006 в 15:16)
 

Вообще использование поразрядных операторов в PHP не характерно - их чаще применяют в графике, когда нужно инвертировать цвета или накладывать фильтр на изображение, а также в системном программировании, помоему больше нигде сейчас вручную битами не манипулируют.
Поразрядное отрицание превращает все 0 в 1, т.е. допустим имеется у вас число 345, применяем к нему поразрядное отрицание ~345, получаем -346, вроде никакой логики. Но всё сразу становится понятным, если мы перейдём в двоичную систему исчиления
00000000000000000000000000000000000 00000000000000000000101011001 (345)
11111111111111111111111111111111111 11111111111111111111010100110 (-346)

Все нули просто заменяются на 1, а 1 на 0 - вот вам и поразрядное отрицание.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования