当理解原始运算符如+
, -
, *
and /
是用C实现的,我发现了以下片段一个有趣的答案 https://stackoverflow.com/a/11694778/5399734.
// replaces the + operator
int add(int x, int y) {
while(x) {
int t = (x & y) <<1;
y ^= x;
x = t;
}
return y;
}
看来这个函数演示了如何+
实际上在后台工作。然而,这对我来说太混乱了,无法理解。我相信很长时间以来这样的操作都是使用编译器生成的汇编指令来完成的!
Is the +
运算符按照发布的代码实现MOST实施?这是否利用了二进制补码或其他依赖于实现的功能?
迂腐一点,C 规范没有指定how添加已实施。
但实事求是地说,+
小于或等于 CPU 字长的整数类型上的运算符将直接转换为 CPU 的加法指令,而较大的整数类型将转换为多个加法指令,并带有一些额外的位来处理溢出。
CPU 内部使用逻辑电路来实现加法,并且不使用循环、移位或任何与 C 工作方式非常相似的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)