栈的应用之数制转换

本文介绍了一种使用栈来实现不同数制间转换的方法,包括十进制与其他进制的互相转换,以及八进制、二进制与十六进制之间的快速转换。通过具体的例子演示了算法的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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());
        }
    }
}

 

源码的github地址,可以下载到本地运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值