Когда мы поняли, как примитивные операторы, такие как +
, -
, *
и /
, реализованы в C, я нашел следующий фрагмент из интересного ответа.
// replaces the + operator
int add(int x, int y) {
while(x) {
int t = (x & y) <<1;
y ^= x;
x = t;
}
return y;
}
Похоже, эта функция демонстрирует, как на самом деле работает +
в фоновом режиме. Однако, это слишком запутанно для меня, чтобы понять это. Я считал, что такие операции выполняются с использованием директив сборки, сгенерированных компилятором в течение длительного времени!
Реализован ли оператор +
в виде кода, размещенного в MOST реализациях? Использует ли это два дополнения или другие зависящие от реализации функции?