package stack.demo;
import stack.stack;
/**
* 栈的应用之数制转换
* 1.十进制数N和其他d进制数的转换
* 原理 N=(N /d)xd+ N%d /为整除 %为取模
* 比如 十进制数10
* 满足 10=(10/2)x2 +10%2
*
* 1.例如 十进制数1348 转为八进制数就是2504 这里的N必须是十进制数 否则不成立
* N N/8 N%8
* 1348 168 4
* 168 21 0
* 21 2 5
* 2 0 2
*
* N%8的历次结果从下到上就是2504
*
* 2.八进制数2504转为十进制数
* 4+0x8+5*8*8+2*8*8*8 =4+64*5+2*512 =4+320+1024=1348
*
* 八进制和二进制和十六进制之间转换就很容易了
* 1个八进制数位等于3位二进制数 2个八进制数为等于1个十六进制数位
* 比如 八进制 2504转为二进制数 010101000100 转为十六进制 544
* 验证 010101000100 等于 2的平方+2的6次方+2的8次方+2的10次方 =4+64+256+1024=1348
* 验证 544 等于 4+4*16+5x16X16=1348
*
* 这里用栈去实现第一步
*/
public class conversion {
public static void main(String[] args) {
Integer N=1348;
stack stack=new stack();
stack.InitStack();
while (N!=0){
stack.push(N%8);
N=N/8;
}
while (!stack.StackEmpty()){
System.out.print(stack.Pop());
}
}
}
栈的应用之数制转换
猜你喜欢
转载自blog.csdn.net/qq_20009015/article/details/80725678
今日推荐
周排行