如何解决在现实世界中是否曾经使用过“伪造的减法”?
| 我将计算机系统课程作为我的硕士课程的前提条件,遇到了一些令我着迷并且难以实际使用的东西,那就是“假装减法”,并且不需要成为减法指令。 就像是: - 可以写成: x +(〜y + 1) 现在,这一切都很好,但是对于简单的减法来说似乎太复杂了,尤其是当您可以轻松地输入“ x-y \”时。是否在某些情况下有必要执行此操作,或者仅仅是可以执行但不是必须执行的操作。解决方法
二进制补码实现是在硬件中完成的,因此您不需要像内置数据类型那样实现它们。
如果要创建n位整数算术库,则需要模拟整数加法,减法,乘法和除法等运算,在这种情况下,可以实施这种技术来添加n位长度数,但是使用我认为,这样做可以更好地实现。
, 这通常是在硬件级别(即ALU内部)完成的。
在软件级别上,它通常是无用的,因为它永远不可能比直接减法更有效(除非您拥有真正奇怪的编译器/平台组合)。
, 很明显,这是内部进行减法的方式,因此我不确定“在现实世界中使用”是什么意思。这就是为什么首先选择二进制补码的原因,因为减法只是溢出负加法。
, 我看不出有任何理由在您的C代码中执行此操作。在软件中执行此操作并不比使用减号运算符减去要快-而且还不清楚。
但是,这就是处理器执行减法的方式。我敢打赌,您已经将此代码作为硬件功能的示例,因为更容易了解“ 0”将如何成为逻辑电路。
所以...不,您不会在现实世界中使用此代码,但是此操作在处理器中执行了很多次。
, 我看不到这样做的意义。它不再有效。实际上,如果编译器未对其进行优化,则最终会生成更多的操作码。
, 在CPU拥有数十亿个晶体管之前,像这样的东西就更常见了。特定的CPU可能未实现特定的减法操作码,因此针对它的编译器(或汇编程序)必须知道该技巧。
这些操作也可以帮助您了解CPU的内部实现。例如,CPU的除法运算有时是通过将除数的倒数乘以除数来完成的;倒数是唯一执行的实际“除法”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。