我正在参加计算机系统课程作为我的硕士课程的预先要求,并且遇到了一些令我着迷并且很难看到实际用途的东西,那就是"伪造减法"以及不需要减法的事实指令.
就像是:
x - y
可以写成:
x +(~y + 1)
现在,这一切都很好,但似乎对于简单的减法来说过于复杂,特别是当你可以轻松地放入"x - y"时.是否有必要这样做的情况,或者只是可以做但不是的事情.
这通常是在硬件级别(即ALU内部)完成的.
在软件层面,它通常是无用的,因为它永远不会比直接减法更有效(除非你有一个真正奇怪的编译器/平台组合).
两者的补码实现是在硬件中完成的,因此您不需要像内置数据类型那样实现它们。
如果您正在制作一个n位整数算术库,那么您需要模拟整数加法、减法、乘法和除法等运算,在这种情况下,可以实现这种技术来添加n位长度的数字,但使用在我看来,携带标志这样做是一个更好的实现。