将方程转换为位移操作

前端之家收集整理的这篇文章主要介绍了将方程转换为位移操作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有将(任意)方程转换为位移操作的标准方法

我的意思是将任何不是a或 – 的东西转换成位移,因此结束方程只包含操作数<<,>>,和 – .这有利于使公式减少处理器密集度.

显然,这些结果方程只是近似值,在考虑的顺序越多(一阶,二阶e.t.c)时给出更好的准确性.

我已经在网上搜索了关于此的任何信息,但找不到任何信息,除了特定公式的内容(sin,cos,inv e.t.c).

我想象的是多项式或泰勒的扩展过程,然后将其转换为位移操作.

解决方法

仅仅因为你将某些东西简化为更简单的指令,并不意味着它们会以某种方式执行得更快或更少.虽然您可以将许多事情减少到减少的操作子集,但您可能需要更多的操作才能完成相同的任务.处理器每秒只能执行如此多的操作,而您将首先遇到这种情况.

通常,当尝试在较低级别优化某些内容时,您会尝试使用更复杂的操作码,以便您需要更少的操作码.例如,您可以通过执行许多ADD指令来执行乘法运算.但是,对于除了最简单的例子之外的任何事情,它将花费比单个MUL操作码更多的ADD,并且执行时间要长得多.

回到你的实际问题但是……完全无视效率,你可以计算任何东西,只要你拥有的指令集是图灵完成.如果你小心选择那条指令,你实际上可以使用a single instruction来计算任何东西.我不相信有任何通用的方式来说“将任意算法转换为仅使用这些指令”,这通常是编译器编写者的工作.

猜你在找的C&C++相关文章