|
|
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Короче, щас турнир пишу. Ну, там пары мемберов сражаются, и один из них вылетает. Допустим, подписались на турнир 12 человек, а ближайшая степень двойки - 8, или 33 человека, а ближайшая - 32. Сделал просто, pow(2,floor(log($count,2))), но что-то мне подсказывает, что можно сделать лучше. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:08:19 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
1<<floor(log($count,2)) вот так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:20:32 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Шогал1<<floor(log($count,2)) вот так? Чё-то я не въехал (м.б., немного в нетрезвом состоянии души). А поподробнее можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:26:07 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Логарифм можно попробовать ускорить, если считать его в цикле: Код: php 1. 2. 3. 4. 5. 6. 7. 8. честно говоря, не знаю, будет ли при этом ускорение в PHP, скорее всего настолько незначительно, что можно забить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:32:42 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Мне моё скромное имхо подсказывает, что если взять двоичное представление числа, а потом прибить всё, кроме самой первой единицы - получится самое то. Это так? А как это лучше всего сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:33:11 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
ShSergeШогал1<<floor(log($count,2)) вот так? Чё-то я не въехал (м.б., немного в нетрезвом состоянии души). А поподробнее можно? Битовый сдвиг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:34:14 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
ShSergeМне моё скромное имхо подсказывает, что если взять двоичное представление числа, а потом прибить всё, кроме самой первой единицы - получится самое то. Это так? А как это лучше всего сделать? Код: php 1. 2. 3. 4. 5. 6. 7. 8. такой вариант пойдёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:39:09 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Ну, скажем, $count=17, а как получить результат (16, то есть)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:41:00 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
чем первоначальный вариант не нравится?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:42:46 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Шогал, Имеется, однако, некоторая тонкость - логарифмы и степени в пхп реализованы таки нативно, а вот на пхп писать цикл - фиг его знает. Может, как-нибудь с помощью булевых (или не знаю каких) операций прибить эти самые двоичные единички? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:45:58 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Hettчем первоначальный вариант не нравится?) Это какой? Имхо, самое правильное - просто прибить все единички (кроме первой), что в двоичном представлении числа. Вот, как это правильно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:48:12 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
ShSergeHettчем первоначальный вариант не нравится?) Это какой? Имхо, самое правильное - просто прибить все единички (кроме первой), что в двоичном представлении числа. Вот, как это правильно сделать? А как сделать это без цикла, если зараннее не знать, сколько именно прибивать?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:50:20 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
ШогалА как сделать это без цикла, если зараннее не знать, сколько именно прибивать?) Не знаю. На самом деле, для использования, мне и степень в логарифме сойдёт, но, как-то, не правильно это. Потому что должно быть какое-то очень простое (до смешного простое) решение. Нутрём чувствую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 22:57:19 |
|
||
|
Степень двойки
|
|||
|---|---|---|---|
|
#18+
Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2012, 23:03:27 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=37953493&tid=1464719]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
981ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 1302ms |

| 0 / 0 |
