Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Деление в PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
darl
Отправлено: 15 Июля, 2013 - 08:14:44
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Как известно, что деление это дорогая операция. Как эти дела обстоят в PHP, как интерпретатор проводит эту операцию, хватает мозгов оптимизировать деление?
 
 Top
imya
Отправлено: 15 Июля, 2013 - 08:17:54
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)






-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
darl
Отправлено: 15 Июля, 2013 - 08:32:59
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)





не нашел, где мне там смотреть?
 
 Top
imya
Отправлено: 15 Июля, 2013 - 08:37:11
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




php.net пишет:
Операция деления ("/") возвращает число с плавающей точкой, кроме случая, когда оба значения являются целыми числами (или строками, которые преобразуются в целые числа), которые делятся нацело - в этом случае возвращается целое значение.

При делении по модулю операнды преобразуются в целые числа (удалением дробной части) до начала операции


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
darl
Отправлено: 15 Июля, 2013 - 08:49:34
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




imya пишет:
php.net пишет:
Операция деления ("/") возвращает число с плавающей точкой, кроме случая, когда оба значения являются целыми числами (или строками, которые преобразуются в целые числа), которые делятся нацело - в этом случае возвращается целое значение.

При делении по модулю операнды преобразуются в целые числа (удалением дробной части) до начала операции

Я наверно туплю, но не понял. Здесь рассказывается просто про деление. А как под капотом проходит все это, в самом интерпретаторе. К примеру мне нужно делить в цикле постоянно на X/4, деление это дорогое удовольствие для процессора. Тогда можно деление заменить на умножение х*0,25. Интерпретатор сможет сам это поменять?
 
 Top
imya
Отправлено: 15 Июля, 2013 - 09:08:27
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




darl пишет:
Интерпретатор сможет сам это поменять?


Интерпретатор будет делать то, что вы ему скажете ;)


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
darl
Отправлено: 15 Июля, 2013 - 09:12:38
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Понятно, спасибо!
 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Июля, 2013 - 09:40:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




darl пишет:
деление это дорогое удовольствие для процессора

darl пишет:
Тогда можно деление заменить на умножение х*0,25

Радость
Делайте всё ручками и показывайте статичный html и не парьтесь Радость
 
 Top
darl
Отправлено: 15 Июля, 2013 - 09:44:08
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




armancho7777777 пишет:
darl пишет:
деление это дорогое удовольствие для процессора

darl пишет:
Тогда можно деление заменить на умножение х*0,25

Радость
Делайте всё ручками и показывайте статичный html и не парьтесь Радость

Это к чему?
 
 Top
LIME
Отправлено: 15 Июля, 2013 - 10:21:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




такие низкоуровневые операции выполняет процессор
интерпретатор нипричем

(Отредактировано автором: 15 Июля, 2013 - 10:27:48)

 
 Top
EuGen Администратор
Отправлено: 15 Июля, 2013 - 10:27:54
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




darl пишет:
К примеру мне нужно делить в цикле постоянно на X/4



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
darl
Отправлено: 15 Июля, 2013 - 10:36:35
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




LIME пишет:
такие низкоуровневые операции выполняет процессор
интерпретатор нипричем

Я в курсе, просто думал что интерпретатор может позаботится о процессоре.
(Добавление)
EuGen пишет:
darl пишет:
К примеру мне нужно делить в цикле постоянно на X/4


Хороший вариант. А если нужно на 3 поделить?
 
 Top
VenZell
Отправлено: 15 Июля, 2013 - 10:40:07
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




darl, хороший только в том случае, если числа у вас >= 4 и делятся на 4 без остатка.
 
 Top
EuGen Администратор
Отправлено: 15 Июля, 2013 - 10:42:06
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




VenZell
Хороший в том случае, если делитель есть степень двойки. Сама двойка - тоже своя степень, поэтому сдвиг вправо на 1 даст деление на 2.
darl пишет:
А если нужно на 3 поделить?

Делить как есть. Более того, при целочисленных операндах в результате в общем случае получается вещественное число.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
darl
Отправлено: 15 Июля, 2013 - 11:25:08
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




EuGen пишет:
VenZell
Хороший в том случае, если делитель есть степень двойки. Сама двойка - тоже своя степень, поэтому сдвиг вправо на 1 даст деление на 2.
darl пишет:
А если нужно на 3 поделить?

Делить как есть. Более того, при целочисленных операндах в результате в общем случае получается вещественное число.

Спасибо!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB