📅  最后修改于: 2023-12-03 15:37:34.349000             🧑  作者: Mango
在编程过程中,实现两个数字相加是非常常见的操作。下面我们将介绍在 C/C++ 中将两个数字相加的 8 种不同方法。
注:以下代码均为 C++ 代码。
int a = 1;
int b = 2;
int result = a + b;
这是实现两个数字相加最常规的方法,直接使用加号(+)运算符实现。
C++ 的 STL (Standard Template Library) 提供了高精度运算类,如 boost::multiprecision
库,可以用于处理大型数字或者需要高精度计算的数字。
#include <boost/multiprecision/cpp_int.hpp>
using boost::multiprecision::cpp_int;
cpp_int a = 1000000000000;
cpp_int b = 999999999;
cpp_int result = a + b;
可以将数拆解成二进制数,再进行运算。
int a = 11;
int b = 8;
int result = a ^ b;
int carry = (a & b) << 1;
while (carry != 0) {
int temp = result;
result = result ^ carry;
carry = (temp & carry) << 1;
}
int a = 10;
int b = 20;
int* p = &a;
int* q = &b;
int result = *p + *q;
int a = 10;
int b = 30;
int result = (a + b) % (a * b);
int add(int a, int b) {
static int cnt = 0;
++cnt;
return a + b;
}
int main() {
int result = add(1, 2);
return 0;
}
int add(int a, int b) {
if (b == 0) {
return a;
}
int sum = a ^ b;
int carry = (a & b) << 1;
return add(sum, carry);
}
这是一种使用汇编语言实现的方法,它可以更加灵活的操作计算机的硬件资源,但是使用起来也更加困难。
int add(int a, int b) {
int result;
asm("addl %1, %0" : "=r"(result) : "r"(a), "0"(b));
return result;
}