一、进制转换理论

十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:

N = (N div d) * d + N mod d(其中:div为整除运算,mod为求余运算)

例如,十进制数105计算八进制数是多少:

    105 % 8 = 1

    105 / 8 = 13

那么第一低位:1

    13 % 8 = 5

    13 / 8 = 1

那么第二低位:  5

    1 % 8 = 1;

    1 / 8 = 0;

那么第三低位:1

综上所述:十进制数105转换成八进制数为151


二、C++编码实现

int main() {
    std::cout << "栈的应用举例(一) 进制转换" << std::endl;
    std::stack<int> S;
    int N, M, E;
    std::cout << "请输入要转换的数字:" << std:: endl;
    std::cin >> N;
    std::cout << "请选择要转换的进制数(例如二进制,只能转换为10内的)" << std::endl;
    std::cin >> M;
    while (N)
    {
        S.push(N % M);
        N = N / M;
    }
    std::cout << N << "进制的数转换为" << M << "进制后为: ";
    while (!S.empty())
    {
        std::cout << S.top();
        S.pop();
    }
    std::cout << std::endl;
    return 0;
}


关注【游戏讲坛】微信公众号,获取最新动态!