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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Memento more или плавающий тип выражения

Сообщения:  [1-10]   [11-18] 

 
 автор: sim5   (18.05.2007 в 15:32)   письмо автору
 
   для: Trianon   (18.05.2007 в 15:15)
 

Логический сдвиг для микроконтроллеров - это всетаки не правило, он может отсутствовать :(
Ну главное ясна причина потери бита! :)

   
 
 автор: Trianon   (18.05.2007 в 15:15)   письмо автору
 
   для: sim5   (18.05.2007 в 15:05)
 

и в микроконтроллерах и в микропроцессорах, как правило, есть не только команды циклического сдвига (ROL/ROR), но и обычного логического (SHL/SHR), а иногда и арифметического (SAR)
Флаг переноса в них входным операндом не является.
А в реализациях компиляторов для тех архитектур, где таких команд нет, перед ROL добавляют CLC (CLear Carry/borrow flag bit)

   
 
 автор: sim5   (18.05.2007 в 15:05)   письмо автору
 
   для: Trianon   (18.05.2007 в 14:42)
 

Ну значит будем считать, что авторы вышеперечисленного, посчитали ненужным этот бит :)
Я по крайней мере не знаю куда он исчезает.

Даже в микроконтроллерах - при простом циклическом сдвиге крайний бит будет перходить на место бита 0 или 7, в зависимости от направления сдвига. Если сдвиг производить командой учитывающей перенос (через флаг переноса), то это позволяет в 8-разрадных процессорах производить лог. сдвиги многобайтовых чисел.

Куда исчезает бит в РНР?

   
 
 автор: Trianon   (18.05.2007 в 14:42)   письмо автору
 
   для: sim5   (18.05.2007 в 14:21)
 

Он в любом языке (где лексема << обозначает сдвиг) таким происходит .
В С, С++, Java, JS, C#(в конечном итоге)
Во всех этих языках он превращается в инструкцию shl (в терминах Intel)
В том числе (в конечном итоге) и в PHP

   
 
 автор: sim5   (18.05.2007 в 14:21)   письмо автору
 
   для: Trianon   (18.05.2007 в 13:45)
 

$b = $a <<4 // =160
Значит сдвиг в РНР происходит без учета переноса, в противном случае должно получится 168.

   
 
 автор: Trianon   (18.05.2007 в 13:45)   письмо автору
 
   для: sim5   (18.05.2007 в 13:34)
 

Так и я говорю не о точности. Оперируя целыми, о точности уже не говорят. Просто на обычных четырех действиях арифметики движок php отказывается оперировать целыми. Я говорю именно об этом отказе.

А скорость несложно померять.... Но думаю, результат будет в пользу сдвигов отнюдь не из-за простоты схемной реализации, а просто потому, что не придется преобразовывать аргументы к вещественному типу.

   
 
 автор: sim5   (18.05.2007 в 13:34)   письмо автору
 
   для: Trianon   (18.05.2007 в 12:49)
 

Я хотел сказать не о точности (понятное дело что это не всегда оправдано), а о скорости выполнения операций деления и логического сдвига. Исходя из логики работы процессора, логический сдвиг, операция быстрее - данные в акумуляторе сдвигаются через флаговый регистр нужное число раз и все, операция деления это несколько сложнее процесс...
Отражается ли это на скорости выполнения этих операций в РНР, вот этого я не знаю :)

   
 
 автор: Trianon   (18.05.2007 в 12:49)   письмо автору
 
   для: sim5   (18.05.2007 в 11:58)
 

>>зачем сдвигать что то и что это дает
>
>Не знаю как разнится в РНР, но бывает, что гораздо быстрее произвести логический сдвиг числа, чем делить его.

Именно в php разница разительная.

<?php 
$a 
=   268435466 ;
echo 
"<br>a= $a";
$b $a <<4;
$c $a *16;
echo 
"<br>b= a<<4 = $b";
echo 
"<br>c= a*16 = $c";

$d $b/64;
$f $b>>6;
echo 
"<br>d= b/64 = $d  ";
echo 
"<br>f= b>>6 = $f  ";
?>

   
 
 автор: sim5   (18.05.2007 в 11:58)   письмо автору
 
   для: bronenos   (18.05.2007 в 07:32)
 

>зачем сдвигать что то и что это дает

Не знаю как разнится в РНР, но бывает, что гораздо быстрее произвести логический сдвиг числа, чем делить его.

   
 
 автор: bronenos   (18.05.2007 в 07:32)   письмо автору
 
   для: mefestofel   (18.05.2007 в 05:43)
 

зачем сдвигать что то и что это дает

   

Сообщения:  [1-10]   [11-18] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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