Форум программистов, компьютерный форум, киберфорум
Assembler: математика, вычисления
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/56: Рейтинг темы: голосов - 56, средняя оценка - 4.70
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
1

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

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

Author24 — интернет-сервис помощи студентам
Вычислить X^n
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2010, 14:39
Ответы с готовыми решениями:

Вычисление целой степени n вещественного числа x
Пожалуйста помогите, одна надежда на вас. Написать Подпрограмму на языке ассемблера для вычисления...

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

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

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

12
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
01.12.2010, 14:48 2
john_jerome, строка для Гугла "примеры на ассемблере для вычисления возведения в степень"
1
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
01.12.2010, 14:54 3
john_jerome, показатель степени целое число? или любое?
1
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
01.12.2010, 14:55 4
vital792, ему без разницы -- лишь бы самому не делать
0
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
01.12.2010, 15:16  [ТС] 5
vital792, целое число
Mikl___, не слишком ли ты самоуверен?
1
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
01.12.2010, 15:20 6
john_jerome, для чего?
0
2014 / 1286 / 61
Регистрация: 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
47 / 47 / 1
Регистрация: 27.11.2010
Сообщений: 95
01.12.2010, 16:12  [ТС] 8
Благодарю!
1
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
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
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
01.12.2010, 21:59 10
murderer, неплохо. Даже красиво. Но я надеюсь что ТС будет сдавать мой вариант
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
02.12.2010, 04:46 11
vital792, murderer
Алгоритм быстрого возведения в степень
Используется представление числа x^m: http://upload.wikimedia.org/ma... 330a9e.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
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
02.12.2010, 15:24 12
рисунок к предыдущему сообщению
Миниатюры
Вычисление n-ной степени числа  
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
02.12.2010, 15:33 13
Mikl___, неплохо. Не знал этот алгоритм
0
02.12.2010, 15:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2010, 15:33
Помогаю со студенческими работами здесь

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

Вычисление факториала и вычисление степени числа
Нужно проверить правильность сделанной программы если не правильно помогите исправить. Var...

Вычисление степени числа
Здравствуйте, необходим код для программы, которая вычисляет степень числа, и так же необходимо...

Вычисление степени числа
используя процедуру возводим число в степень , число и степень вводим с клавиатуры и вывести...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru