一、进制转换基础
- 二进制转为十进制:
把二进制数的各个位拆开,分别乘以2的次幂再累加。末尾位乘2的0次幂,依次类推。
比如:1011
十进制=1*2^3+1*2^2+1*2^1+1*2^0 =11.
- 十进制转为二进制
除k取余法:主要用于把十进制的数化为k进制的数。
例如:
把89化为二进制的数
89÷2=44 余1
44÷2=22 余0
22÷2=11 余0
11÷2=5 余1
5÷2=2 余1
2÷2=1 余0
1÷2=0 余1
然后把余数由下往上排序
1011001(2)
这样就把89化为二进制的数了。
二、利用栈的十进制转N进制算法
public int convertTwo()
{
int n= new Scanner().nextInt();
Stack s = new Stack();
while(n)//当n非0
{
s.push(n%2);//n与2取余数入栈
n = n/2; //n更新为n/2的商
}
//除k操作完成,把余数从下往上排序
while(!stack.empty())
{
System.out.print(stack.pop());//弹出栈顶元素相当于颠倒顺序
}
}
结论:颠倒顺序的问题可以考虑栈这种数据结构。