Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.83
john_jerome
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
#1

Вычисление n-ной степени числа - Assembler

01.12.2010, 14:39. Просмотров 5312. Ответов 12
Метки нет (Все метки)

Вычислить X^n
http://www.cyberforum.ru/assembler-math/thread1005193.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 14:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычисление n-ной степени числа (Assembler):

Вычисление степени тройки (ассемблер 8086)
Напишите программу, вычисляющую и выводящую таблицу степеней троек (от 30 до...

получить 2 числа, равные двум в степени двух каких-то чисел...
Всем привет! у меня возникла небольшая проблемка... выполняю контрольное...

Вычисление факториала любого числа
Помогите сделать программу на ассеблере, которая вычисляет факториал от любого...

Вычисление числа Пи с заданной точностью
Задание 2 Написать програму вычисляющую число пи с заданной точность....

вычисление квадратного корня из 16разрядного числа
Доброго времени суток! нужна помощь в создании программы на TASM. Цель:...

12
Mikl___
Автор FAQ
11369 / 5912 / 534
Регистрация: 11.11.2010
Сообщений: 10,933
01.12.2010, 14:48 #2
john_jerome, строка для Гугла "примеры на ассемблере для вычисления возведения в степень"
0
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
01.12.2010, 14:54 #3
john_jerome, показатель степени целое число? или любое?
1
Mikl___
Автор FAQ
11369 / 5912 / 534
Регистрация: 11.11.2010
Сообщений: 10,933
01.12.2010, 14:55 #4
vital792, ему без разницы -- лишь бы самому не делать
0
john_jerome
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
01.12.2010, 15:16  [ТС] #5
vital792, целое число
Mikl___, не слишком ли ты самоуверен?
1
Mikl___
Автор FAQ
11369 / 5912 / 534
Регистрация: 11.11.2010
Сообщений: 10,933
01.12.2010, 15:20 #6
john_jerome, для чего?
0
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
01.12.2010, 15:24 #7
Mikl___, действительно, можно чуть повежливее? Не все тут специалисты.

john_jerome,
Assembler
1
2
3
4
5
6
7
8
9
...
mov cx, показатель
dec cx
mov ax, основание
mov bx, ax
@1:
mul bx
loop @1
...
результат будет в паре dx:ax
0
john_jerome
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
01.12.2010, 16:12  [ТС] #8
Благодарю!
1
murderer
3314 / 1461 / 133
Регистрация: 06.10.2010
Сообщений: 3,215
01.12.2010, 18:35 #9
vital792
У тебя алгоритм сложности O(n).

Вот алгоритм из модуля Math для Delphi. Выполняется за log2(n) итераций.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function IntPower(const Base: Extended; const Exponent: Integer): Extended;
asm
        mov     ecx, eax
        cdq
        fld1                      { Result := 1 }
        xor     eax, edx
        sub     eax, edx          { eax := Abs(Exponent) }
        jz      @@3
        fld     Base
        jmp     @@2
@@1:    fmul    ST, ST            { X := Base * Base }
@@2:    shr     eax,1
        jnc     @@1
        fmul    ST(1),ST          { Result := Result * X }
        jnz     @@1
        fstp    st                { pop X from FPU stack }
        cmp     ecx, 0
        jge     @@3
        fld1
        fdivrp                    { Result := 1 / Result }
@@3:
        fwait
end;
1
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
01.12.2010, 21:59 #10
murderer, неплохо. Даже красиво. Но я надеюсь что ТС будет сдавать мой вариант
0
Mikl___
Автор FAQ
11369 / 5912 / 534
Регистрация: 11.11.2010
Сообщений: 10,933
02.12.2010, 04:46 #11
vital792, murderer
Алгоритм быстрого возведения в степень
Используется представление числа x^m: http://upload.wikimedia.org/math/0/1...d1b2330a9e.png
на паскале
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function power(t, k: integer): integer; //возведение числа t в степень k
var
  res:integer;
begin
  res := 1;
  while (k > 0) do
  begin
    if (k mod 2 = 1) then  //   {или напишите "if (k and 1 = 1)" для большей скорости выполнения} 
      res := res * t;
    t := t * t;
    k := k div 2;     //   {или напишите "k := k shr 1;" для большей скорости выполнения}
  end;
  power := res;
end;
на Си
C
1
2
3
4
5
6
7
8
9
10
int power(int t, int k) {
// возведение t в степень k
  int res = 1;
  while (k) {
    if (k & 1) res *= t;
    t *= t;
    k >>= 1;
  }
  return res;
}
Чтобы узнать, сколько умножений потребуется для возведения числа x в степень n алгоритмом быстрого возведения в степень, нужно произвести вычисления по следующей формуле: k = H + 2(E − 1), где H — количество нулей, а E — количество единиц в двоичной записи числа n.
Так, для возведения числа в сотую степень этим алгоритмом потребуется всего лишь 8 умножений.
Таким образом количество умножений равно O(lnn).
2
Mikl___
Автор FAQ
11369 / 5912 / 534
Регистрация: 11.11.2010
Сообщений: 10,933
02.12.2010, 15:24 #12
рисунок к предыдущему сообщению
0
Миниатюры
Вычисление n-ной степени числа  
vital792
1997 / 1269 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
02.12.2010, 15:33 #13
Mikl___, неплохо. Не знал этот алгоритм
0
02.12.2010, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2010, 15:33
Привет! Вот еще темы с решениями:

Вычисление квадратного корня из числа без использования сопроцессора
Помогите пожалуйста вычислить функцию корень из Х без использования сопра.

Извлечь корень н-ной степени из числа
;Великая теорема Ферма. ;Для любого натурального числа n > 2 уравнение ; ...

Извлечение корня н-ной степени из числа
Здравствуйте!!! Тут задачка такая: нужно извлечь корень н-ной степени из числа...

Вычисление степени числа и запись цифр степени числа в массив
помогите пожалуйста) написать программу для вычисления степени числа и записью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru