二进制和十进制之间的转换小工具

  • List item

进制转换小工具

通过栈结构实现进制转换,使用node环境可以直接运行代码。
通过node执行js时传入两个参数,一个为要转换进制的数值,一个为要转为几进制(2或者10)

class Stack {
    constructor() {
        this.items = [];
    }
    push(ele) {
        return this.items.push(ele);
    }
    pop() {
        return this.items.pop();
    }
    peak() {
        return this.items[this.items.length - 1];
    }
    size() {
        return this.items.length;
    }
    isEmpty() {
        return this.items.length == 0;
    }
}

//十进制转为二进制
function DtoB(Dnum) {
    //创建栈实例
    let s = new Stack();
    //商
    let cousult = Dnum;
    //只商不为0,一直除
    while (cousult > 0) {
        let remainder = cousult % 2;
        cousult = Math.floor(cousult / 2);
        s.push(remainder);
    }
    //弹出存储的二进制
    let Bnum = ''
    while (!s.isEmpty()) {
        Bnum += s.pop();
    }
    return Bnum;
}
//转为10进制
function BtoD(Bnum) {
    Bnum = Bnum + '';
    let Dnum = 0;
    for (let i = 0; i < Bnum.length; i++) {
        if (Bnum[i] == 1 || Bnum[i] == 0) {
            let pow = Bnum.length - 1 - i;
            Dnum = Dnum + Bnum[i] * 2 ** pow;
        } else {
            console.log('请输入正确的二进制数值');
            return;
        }

    }
    return Dnum;
}

//通过node的Global对象中的Process获取传入的参数
//要转换的数字
let number = process.argv[2];
//目标进制
let bs = process.argv[3];

//转换后的值
let Rnum;
if (bs == 2) {
    Rnum = DtoB(number);
    if (Rnum != undefined) {
        console.log(Rnum);
    }
} else if (bs == 10) {
    Rnum = BtoD(number);
    if (Rnum != undefined) {
        console.log(Rnum);
    }
} else {
    console.log('只能转换二进制和十进制哦!');
}

执行方式:

node .\二进制和十进制转换.js 10010 10

node .\二进制和十进制转换.js 8 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙仔like code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值