Potencia en microcontrolador.

propuesto por josejuan

Os han contratado para programar un microcontrolador, en él, hace falta calcular la potencia n-ésima de un número entero no negativo. Pero resulta que el microcontrolador es tan limitado, que no tiene operaciones para multiplicar (sí puede sumar y realizar las operaciones típicas con bits).

Enunciado
Os han contratado para programar un microcontrolador, en él, hace falta calcular la potencia n-ésima de un número entero no negativo. Pero resulta que el microcontrolador es tan limitado, que no tiene operaciones para multiplicar (sí puede sumar y realizar las operaciones típicas con bits).

Un buen compilador sabría transformar la sentencia

n^m = n * n * n * ... n

en un código con sólo sumas y operaciones de bits.

¿Pero sabrías tú escribir ese código? (en tu lenguaje favorito, claro)
Preguntas sobre el desafío

¿Tienes dudas sobre el desafío? plantéala aquí

Plantea tu pregunta

8 Soluciones

Dar mi solución

0votos
Potencia en microcontrolador. en C#
por

U2_Caparzo

hace 6 años

Mi solucion fue simplemente crear 2 metodos por separado (para mayor claridad durante el desarrollo) uno se llama Multiplicar y otro elevar, ambos con 2 parametros, el primero tiene por parametros 2 uint (factores) y el el segundo un uint(base) y un byte(exponente). un ciclo for en cada uno. solo hago uso de sumas.

0votos
Potencia en microcontrolador. en C
por

Adolfo

hace 6 años

Solución basada en la exponenciación entera descrita en el indispensable "Hacker's Delight" de Henry S. Warren Jr. El algoritmo de multiplicación minimiza el número de sumas cuando alguno de los factores es par aprovechando que desplazar un bit equivale a multiplicar/dividir por 2 (se puede mejorar un poco operando sobre el factor más grande, pero es sábado y tengo planes :-) ).

Dar mi solución