当了解如何原始的运营商,如+,-,*并/用C实现,我发现从下面的代码片段一个有趣的答案.
// replaces the + operator
int add(int x, int y) {
while(x) {
int t = (x & y) <<1;
y ^= x;
x = t;
}
return y;
}
Run Code Online (Sandbox Code Playgroud)
似乎此函数演示了如何+在后台实际工作.但是,理解它对我来说太困惑了.我相信这样的操作是使用编译器生成的汇编指令很长时间完成的!
我的问题是:+运算符是否作为MOST实现上发布的代码实现?这是否利用了两个补码或其他依赖于实现的功能?如果有人能解释它是如何工作的,我会非常感激.
嗯...也许这个问题在SO上有点偏离主题,但我认为通过这些运算符来看是有点好的.