資料結構—棧應用(一)數制轉換
阿新 • • 發佈:2019-02-14
問題:
十進位制如何轉換成二進位制
十進位制如何轉換成八進位制
十進位制如何轉換成十六進位制
十進位制數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”。