x^y
(非負の x と y) の値を見つけるコードを作成しようとしています。問題は、私が ISA を拡張していて、それを構築する乗算がないことです。ネストされたループと追加を使用した解決策があると思いますが、特により高い電力とベースの場合、それはかなり非効率的である可能性があります.
ビットごとのシフトまたは他の巧妙な方法を使用してこれを計算する効率的な方法があるかどうか疑問に思っていましたか? 私は動作すると思われる偶数ベースのアルゴリズムを考え出しましたが、奇数ベースについては何も理解できません。もちろん、奇数と偶数の両方で機能する解決策があれば、その数が奇数か偶数かを判断する処理時間を節約できればさらに良いでしょう。
偶数の場合、私の解決策は、基数を右にシフトして 2 で割り、指数 1 の倍数の左シフト (シフトごとに 2 倍) を実行することでした。
例: 4^3
4 RS = 2 したがって、2 つの左シフトは 4 を乗算するようなものです。それを 2 回 (指数-1) 実行すると、4*4*4 = 4^3
それで、これは正の x と y に対してのみ機能する必要があることを覚えておいてください。誰かが良い解決策を持っていますか? 前もって感謝します。