|
|
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
Как посчитать логарифи по основанию 2 в VC++6? Была у меня формула, да вот немогу найти, может кто так знает (с округлением до целого в большую сторону). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 17:58 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
log x (y) - логарифм y по основанию x. Равен ln(y)/ln(x), где ln это любой логарифм. В VC++ 6 Вы можете использовать в качестве ln и log, и log10 Например: log(y)/log(2) или log10(y)/log10(2). Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:16 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
Для быстрого вычисления целочисленного логарифма есть неплохой алгоритмик, основанный на дихотомическом поиске. Если интересует... то могу поискать. Есть мнение что он работает быстрее чем вещественный. Хотя я сам не проверял. P.S. - Вы ведь сочувствуете голодающим детям? - (...Кислярский сочувственно загрустил) (с) 12 Стульев ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2005, 19:49 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
>mayton Конечно интересно, если не трудно, поищите плиз! Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2005, 09:57 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
Вот. Кажется так. По аналогии можно написать функцию для short и long типов данных. Удобно реализовывать на ассемблере. Для вычисление с избытком есть формула [Log2(x)]=Log2(x-1)+1 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Пример приведен из книги Генри Уоррена "Алгоритмические трюки для программистов" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 14:10 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
гмм... точность до целого при вычислении логарифмов? это рулит, imho, только при оценках. или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 16:08 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
13th_apostleгмм... точность до целого при вычислении логарифмов? это рулит, imho, только при оценках. или я ошибаюсь? Ну... это зависит от того что требуется реализовать. В криптографии поиск логарифма по основанию 2 и округление с избытком - это очень распространенная операция. Конечно можно сослатся на вычисления с плавающей точнкой... но вопрос в том, насколько это необходимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 18:08 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
>mayton Он всё время -4 выводит. Версия без ошибок такая: int Log2(unsigned int x){ if (x==0) return 32; int n=0; if (x<=0x0000FFFF) {n+=16;x<<=16;} if (x<=0x000FFFFF) {n+=8;x<<=8;} if (x<=0x00FFFFFF) {n+=4;x<<=4;} if (x<=0x3FFFFFFF) {n+=2;x<<=2;} if (x<=0x7FFFFFFF) {n+=1;} return n-31; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 18:24 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
ОК. Я проверю сегодня вечером. С книжки переписал. Видимо очепятка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2005, 18:28 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
Вот. Была ошибочка в константе. И я думаю надо суффикс ul указывать. Тут разные компилляторы C++ ведут себя по разному. И int воспринимают по разному. Некоторые как 16 бит знаковое, некоторые 32. Я тестировал на Borland C++ 5.4 Win32. Все нормально. Исходник: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Протокол работы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 10:40 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
Это не логарифм по основанию два, а поиск единственной двоичной единицы в машинном слове. Да и чем сдвиги и маски городить, легче тупо проверить 33 значения. А Log2(5) = 3 - этто оригинально !! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 11:57 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
MasterZivДа и чем сдвиги и маски городить, легче тупо проверить 33 значения. ОК. Давай сравнительный тест. Два варианта. С 5 проверками и с 33 проверками. И отчет о времени выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:04 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
MasterZivА Log2(5) = 3 - этто оригинально !! Никакой ошибки нет. Для представления числа 5 достаточно 3 двоичных разрядов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:09 |
|
||
|
Как посчитать логарифи по основанию 2 в VC++6?
|
|||
|---|---|---|---|
|
#18+
это зависит от того что требуется реализовать. В криптографии сорри, я протупил: вопрос-то и был про округление до целого. =) А Log2(5) = 3 - этто оригинально !! так ведь так оно и есть при округлении в большую сторону. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2005, 12:10 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=419&tid=2033862]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 380ms |

| 0 / 0 |
