cpp 中的十进制右循环移位



我需要这样做,称为"十进制右循环移位"。例如,如果输入为8652则输出将2865

有没有办法在不转换为字符串和字符串操作的情况下在 CPP 中执行此操作?仅使用算术运算,循环并转换为二进制。

如果数字中的位数严格为 4,您可以执行以下操作:

int src = 1234;
int dest = (src / 10) + (src % 10) * 1000;

在这里,如果src末尾有0,则dest为3位数。你需要处理这个问题。

对于其他长度,您需要适当调整代码。

实际上,对于任何整数,都可以像这样简单快捷地完成:

#include <iostream>
using namespace std;
int concatenate (int x, int y)
{
        int pow = 10;
        while (y >= pow)
            pow *= 10;
        return x * pow + y;
}
int main()
{
        int rpm = 8652;
        // Cyclic Right Shift
        int lastDigit = rpm % 10;  //getting the last digit
        int otherDigits = (rpm - lastDigit)/10; //rest of the digits
        int CRS = concatenate(lastDigit, otherDigits); //concatenation
}

相关内容

  • 没有找到相关文章

最新更新