The most efficient way to reverse a number

algorithm, c++, optimization, performance

Solution

Something like this will work:

#include <iostream>

int main()
{
    long in = 3456789;
    long out = 0;
    while(in)
    {
        out *= 10;
        out += in % 10;
        in /= 10;
    }
    std::cout << out << std::endl;
    return 0;
}

Problem

I am looking for an efficient algorithm to reverse a number, e.g. Input: 3456789 Output: 9876543 In C++ there are plenty of options with shifting and bit masks but what would be the most efficient way ? My platform: x86_64 Numbers range: XXX - XXXXXXXXXX (3 - 9 digits) EDIT Last digit of my input will never be a zero so there is no leading zeros problem.

Original source

Related problems