1. 程式人生 > >資料結構—棧應用(一)數制轉換

資料結構—棧應用(一)數制轉換

問題:
十進位制如何轉換成二進位制
十進位制如何轉換成八進位制
十進位制如何轉換成十六進位制

十進位制數N和其他d進位制數的轉換的原理為N=(N div d)* d + N mod d*
比如十進位制的數字10轉換為二進位制口算就知道是1010,那按照上面的公式

  N            N div  2          N  mod  2
 10               5                  0
  5               2                  1
  2               1                  0
  1               0                  1

當N div 2 = 0時,則結束轉換,最後轉換出來的結果就是 N mod 2 那一列從後往前的數 1 0 1 0

程式碼如下

#include<cstdio>
#include<stack>
using namespace std;

int main()
{
    stack <int> s;
    int n;
    scanf("%d",&n);
    while(n)
    {
        s.push(n%2);
        n/=2;   
    }   
    while(!s.empty())
    {
        printf
("%d",s.top()); s.pop(); } return 0; }

同理,轉換成八進位制把2換成8即可,但是注意的是轉換成十六進位制,要用“ABCDEF”來代替“10,11,12,13,14,15”。