MSB对齐添加

时间:2016-12-11 05:01:33

标签: c++ math recursion addition constexpr

我正在寻找一种方法(最好是递归的)来添加两个整数,并将msb对齐。

例如:125 + 25 = 375。

我试图扭转数字以有效地对齐它们,但携带将是完全错误的。即。 526(625)+ 05(50)= 531。

2 个答案:

答案 0 :(得分:0)

1)使用while / 10循环计算两个数字的位数

2)获得差异

3)将最小数乘以10 ^差

4)将它们加在一起

答案 1 :(得分:0)

你需要包含math.h。假设m和n是自然数,下面的工作方法是将较小的数乘以10(如果需要),直到它与较大的数字相同,然后加上。

int funkyAdd (int m, int n)
{
    if ((m<=0)||(n<=0)){return -1;}
    int smaller=std::min(m,n);
    int larger=std::max(m,n);
    while (floor(log10(smaller))<floor(log10(larger))){smaller*=10;};
    return (smaller+larger);
}