栈的应用之数制转换

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