使用栈实现进制转换

进制转换原理

这里写图片描述

上图是十进制150转换为二进制的实例,实现方式是将150除以2取余,将余数记下,然后商继续除以2取余,重复该操作,直到商为0为止。

然后将得到的所有余数倒着连起来,就是二进制的值。

十进制转为八进制或十六进制都是一样的原理,只要将除数改为8或16即可。

实现

栈的实现请参考:https://blog.csdn.net/u010837612/article/details/79914935

#include <iostream>
#include <stdlib.h>
#include "MyStack.h"

using namespace std;

#define HEX      16  //16进制
#define OCTONARY 8   //8进制
#define BINARY   2   //2进制

int main(void) {

    MyStack<char> *stack = new MyStack<char>(20);

    char nums[] = "0123456789ABCDEF"; 

    int N = 1234;
    int mod;

    int sys = HEX;

    while (N != 0) {

        mod = N % sys;
        N = N / sys;
        stack->push(nums[mod]);

    }

    cout << sys << "进制结果为:";

    while (!stack->isEmpty()) {
        char ele;
        stack->pop(ele);
        cout << ele;
    }
    cout << endl;

    delete stack;
    stack = NULL;

    system("pause");
    return 0;

}

猜你喜欢

转载自blog.csdn.net/u010837612/article/details/79926777
今日推荐