可能重复:
Efficient Exponentiation For HUGE Numbers (I’m Talking Googols)
我正在尝试创建一些代码来查找x^y
的值(非负x和y)。问题是,我正在扩展ISA,并且没有构建它的乘法。我认为我有一个使用嵌套循环和添加的解决方案,但这可能效率很低,特别是对于更高的权力和基础。
我想知道是否有一种有效的方法来使用按位移位或其他一些聪明的方法来计算它?我已经找到了一些算法甚至是我认为工作的基础算法,但我找不到任何奇怪的基础。当然,如果有一个适用于赔率和平均值的解决方案可以更好地节省处理时间,以确定数字是奇数还是偶数。
对于evens,我的解决方案是右移基数将其除以2并执行许多左移(每班次2次)乘以指数-1。
示例:4 ^ 3
4 RS = 2
因此,2个左移是乘以4,做2次(指数-1)得到4*4*4 = 4^3
所以,请记住,这只需要为正x和y工作,有没有人有一个好的解决方案?提前谢谢。