在理解诸如 +
、 -
、 *
和 /
之类的基本运算符是如何在 C 中实现的时候,我发现了来自 一个有趣的答案的以下片段。
// replaces the + operator
int add(int x, int y) {
while(x) {
int t = (x & y) <<1;
y ^= x;
x = t;
}
return y;
}
这个函数似乎演示了 +
在后台的实际工作方式。然而,这对我来说太混乱了,无法理解。我相信这样的操作是使用汇编器生成的汇编指令很长一段时间!
+
操作符是否实现为在 大部分实现上张贴的代码?这是否利用了两者的互补性或其他与实现相关的特性?