0
点赞
收藏
分享

微信扫一扫

JS使用栈实现十进制转二进制

楠蛮鬼影 2022-04-13 阅读 123

使用js数组封装的栈结构 实现十进制转二进制

基本思路

输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2…依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。

假设输入100:

100/2得到余数0,将其压栈

50/2得到余数0,将其压栈

.

.

.

逐个出栈,得到二进制。

在这里插入图片描述

基于数组封装的栈结构

// 栈中的属性。js是弱类型语言,添加属性不用声明
this.items = [];
// 添加栈的操作
// push压栈  将某个元素添加进来
Stack.prototype.push=function(element){
    this.items.push(element);
}
// pop出栈 返回栈顶元素并删除
Stack.prototype.pop=function(){
    this.items.pop();
}
// peek查看栈顶元素 不会改变元素
Stack.prototype.peek=function(){
    return this.items[this.items.length-1];
}
// isEmpty判空
Stack.prototype.isEmpty=function(){
    return this.items.length==0;
}
// size 返回栈的个数
Stack.prototype.size=function(){
    return this.items.length;
}
// toString 将栈的内容以字符串的形式返回
Stack.prototype.toString=function(){
    var str="";
    for(var i=0;i<this.items.length;i++){
        str+=this.items[i]+"";
    }
    return str;
}
}

封装转换函数

function DecToBdc(Dnumber){
    var stack=new Stack();
    while(Dnumber>0){
        // 将余数压入栈中
        stack.push(Dnumber%2)
        // 获取整除后的结果(向下取整),作为下一次运算的数字
        Dnumber=Math.floor(Dnumber/2);
    }
    // 定义变量接收出栈的余数
    var str="";
    while(!stack.isEmpty()){
        str+=stack.items.pop();
    }
    return str;
}

测试结果

console.log(DecToBdc(100));//1100100
举报

相关推荐

0 条评论