Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Вниз

Народ , может кто помнит как в Делфи в степень возвести.   Найти похожие ветки 

 
smartleds   (2008-02-17 10:27) [0]

например 2 в степени "m" , как записать?
Под рукой учебника нет....


 
Mk30 ©   (2008-02-17 10:35) [1]

держи пример
Х в степени y =
x:=exp(y*ln(x))


 
MBo ©   (2008-02-17 10:37) [2]

и Math.Power


 
smartleds   (2008-02-17 10:43) [3]

Братцы , чтото торможу а причем здесь натуральный логарифм .
мне нужно 2 в степень "m" возвести. Т.Е вместо "x" у меня "2"
получится ерунда какая то
2:=exp(m*ln(2));
А как это с Math.Power будет выглядеть


 
Mk30 ©   (2008-02-17 10:54) [4]


> ерунда какая то
> 2:=exp(m*ln(2));


все просто -  у тебя будет так=

x:=exp(m*ln(2));

в переменную =x= у тебя и будет записан искомый результат.
это  мы еще на информатике проходили на турбо паскале )))).


 
smartleds   (2008-02-17 11:03) [5]

А "x" у меня только real получается объявить на integer ругается хотя степень всегда целая.


 
Mk30 ©   (2008-02-17 11:09) [6]


> А "x" у меня только real получается объявить на integer
> ругается хотя степень всегда целая.


:) ну так =х= это же не степень .)  а результат . степень у тебя =м=  не путай ))


 
smartleds   (2008-02-17 11:13) [7]

у меня =х= используется в цикле for , транслятор ругается что оно не integer.


 
smartleds   (2008-02-17 11:14) [8]

а выражение x:=exp(m*ln(2)); работает , только тогда когда =х= объявлено как real.


 
Mk30 ©   (2008-02-17 11:17) [9]


> у меня =х= используется в цикле for , транслятор ругается
> что оно не integer.
> <Цитата>
>
>
> smartleds   (17.02.08 11:14) [8]
> а выражение x:=exp(m*ln(2)); работает , только тогда когда
> =х= объявлено как real.


ну тогда поменяй =х= на любую букву просто.


 
DiamondShark ©   (2008-02-17 11:21) [10]

Так тебе чего надо?
Вообще в степень возвести, или 2 в целую степень?

Если первое, то ответ дали.
Если второе, то 1 shl m


 
smartleds   (2008-02-17 11:34) [11]

мне нужно возвести 2 в целую степень m


 
Ega23 ©   (2008-02-17 11:37) [12]


> мне нужно возвести 2 в целую степень m

1 shl m


 
Семеныч   (2008-02-17 11:38) [13]

> smartleds   (17.02.08 11:34) [11]

Так ведь уже ответили: 2 shl m.


 
Семеныч   (2008-02-17 11:38) [14]

Блин. 1, конечно.


 
Anatoly Podgoretsky ©   (2008-02-17 13:36) [15]

Нечего было уроки прогуливать.


 
isasa ©   (2008-02-17 15:44) [16]

1 shl (m-1) , не ?


 
isasa ©   (2008-02-17 15:46) [17]

:)

Не, виноват, если m-1, то 2.


 
Бегущий человек ©   (2008-02-17 18:55) [18]

Вот вы аффтара замордовали:-D
Разжую :
Предложено два способа
1) x = 1 shl m .  При m=1 x=2, при m=2 x=4 и т.д. т.к. происходит сдвиг 1 влево на m разрядов, что эквивалентно возведению 2 в степень m
2) uses Math...
...
x= IntPower(2, m)


 
isasa ©   (2008-02-17 21:42) [19]

Бегущий человек ©   (17.02.08 18:55) [18]

Плотно, доходчиво. У меня всегда терпения не хватает.

Однако возводить целое в целую степень(убычное умножение) через механизм логарифмирование ( exp(y*ln(x)) ) - крутое извращение.


 
isasa ©   (2008-02-17 21:46) [20]

:)
(умножение) - откуда взялось убыточное не знаю, виноват ....


 
engine ©   (2008-02-17 21:47) [21]

> [20] isasa ©   (17.02.08 21:46)

наверное, всетаки, не убыточное, а обычное :)


 
Пробегал...   (2008-02-17 21:49) [22]

а нас кстати тоже на информатике учили возводить число в степень через логарифм и экспонирование. Подозреваю, что это самый быстрый способ. Разве нет?


 
engine ©   (2008-02-17 21:52) [23]

> [22] Пробегал&#133   (17.02.08 21:49)

shl быстрее.


 
vrem_   (2008-02-17 21:59) [24]

при shl может не вместится результат
автор соглашайся на логарифм, можно же округлить до целого.
(потом приходи спросишь как округлять)


 
Пробегал...   (2008-02-17 22:01) [25]

engine ©   (17.02.08 21:52) [23]

нет, ну я имею в виду возведение в степень для произвольного числа.

Сказано было:

Однако [b]возводить целое[/b] в целую степень(убычное умножение) через механизм логарифмирование ( exp(y*ln(x)) ) - крутое извращение

так а какой способ быстрее для возведения ЦЕЛОГО в целую степень?


 
vrem_   (2008-02-17 22:06) [26]

Пробегал...   (17.02.08 22:01) [25]
сдвигаешь на каждое количество битов в показателе и складываешь


 
isasa ©   (2008-02-17 22:43) [27]

engine ©   (17.02.08 21:47) [21]

наверное, всетаки, не убыточное, а обычное :)


Точно, спасибо.

Через логарифм получаем float(double), формально - потеря точности. А оно нам надо?
Легче быстренько сварганить перегружаемую функцию и забыть ...


 
isasa ©   (2008-02-17 22:47) [28]

vrem_   (17.02.08 22:06) [26]

Пробегал...   (17.02.08 22:01) [25]
сдвигаешь на каждое количество битов в показателе и складываешь


:)
А естественным путем, т.е. умножением, не?


 
Marser ©   (2008-02-18 00:34) [29]


> vrem_   (17.02.08 21:59) [24]
>
> при shl может не вместится результат

У жлобов :)


 
AndreyV ©   (2008-02-18 00:56) [30]

> [28] isasa ©   (17.02.08 22:47)
> А естественным путем, т.е. умножением, не?

Путь через ж... т.е. уножение противоестественен для процессора.


 
Petr V. Abramov ©   (2008-02-18 01:56) [31]


> AndreyV ©   (18.02.08 00:56) [30]

вроде бы с первого пня так же естественнен, как сложение, за один такт.
могу ошибаться, как и все :)


 
AndreyV ©   (2008-02-18 08:00) [32]

> [31] Petr V. Abramov ©   (18.02.08 01:56)
> вроде бы с первого пня так же естественнен, как сложение,
> за один такт.
> могу ошибаться, как и все :)

Это мне, видать, какие-то другие процессоры вспомнились под утро:).


 
Пробегал...   (2008-02-18 11:08) [33]

а разве умножение в процессоре не по такой же схеме сделано? То есть: exp(y*ln(x))

причем логарифмирование идет по таблице и через интерполирование... Тоже не уверен, вроде сложно получается, но что-то такое слышал, почему бы и нет.


 
Ins ©   (2008-02-18 11:42) [34]

Отрываю от сердца :))))))

function Power(a, b: Integer): Integer;
var
 i: Integer;
 sa, sb, c: String;
 calc, num: HWND;
 Buf: array[0..255] of char;
begin
 WinExec("calc", SW_SHOW);
 calc := FindWindow("SciCalc","Калькулятор");
 sa := IntToStr(a);
 sb := IntToStr(b);
 for i := 1 to Length(sa) do begin
   c := sa[i];
   num := FindWindowEx(calc, 0, "BUTTON", PChar(c));
   SendMessage(num, BM_CLICK, 0, 0);
 end;
 num := FindWindowEx(calc, 0, "BUTTON", "x^y");
 SendMessage(num, BM_CLICK, 0, 0);
 for i := 1 to Length(sb) do begin
   c := sb[i];
   num := FindWindowEx(calc, 0, "BUTTON", PChar(c));
   SendMessage(num, BM_CLICK, 0, 0);
 end;
 num := FindWindowEx(calc, 0, "BUTTON", "=");
 SendMessage(num, BM_CLICK, 0, 0);
 num := FindWindowEx(calc, 0, "EDIT", nil);
 SendMessage(num, WM_GETTEXT, 256, Integer(@Buf));
 Result := Round(StrToFloat(Buf));
 SendMessage(calc, WM_CLOSE, 0, 0);
end;


 
Пробегал...   (2008-02-18 12:04) [35]

Ins ©   (18.02.08 11:42) [34]

красавец ;)))))



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.03.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.045 c
15-1203088368
KSergey
2008-02-15 18:12
2008.03.30
Ворпрос про VB


2-1204193295
bigbro
2008-02-28 13:08
2008.03.30
WideString в элементах управления


9-1168453494
DillerXX
2007-01-10 21:24
2008.03.30
Загрузка процессора


2-1204539788
Student :)
2008-03-03 13:23
2008.03.30
XML и зависание главной формы


2-1203587539
Pavelkq
2008-02-21 12:52
2008.03.30
Многострочный текст в CheckListBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский